携帯FlashをFlashDevelopで作る。

ってーのを最近ずっとやってんですが、ハマったので記録。

fscommand2(MTASCではFSCommand2)のコマンドの実行は正常にも関わらず、その後の実行が正常に行かない。って現象。具体的には変数を参照できない(undefとかで帰る)状態に陥ります。

どうもswfdumpとかで調べてみたんですが、コンパイラMTASCのバグっぽい。

http://lists.motion-twin.com/pipermail/mtasc/2008-April/030436.html

にあるbugについては私が利用しているVersionではFixされていました。

ただ、どうも変数参照する場合のスコープ制御がおかしくなってるように見えます。

MTASCのソースまでは追ってないので断言まではできませんが。

たとえば

var nSignalLevel:Number = FSCommand2(“GetSignalLevel”);
  
if (nSignalLevel == 1) {
  
;
  
}
  
if(nSignalLevel == 2) {
  
;
  
}

とした場合には二度目のnSignalLevel参照時に focus オブジェクトの nSignalLevel プロパティーを参照してしまいます。

恐らくですがコンパイラのバグで変数参照だけの問題なのでWrapper作ってみたところ解決できました。

ただ、本当に細かいところまで追ってはいないので 正しい対応かどうかはわかりません。

とか、弱気になんか「かな?」とか「だと思う」とか書いてますが、まぁ少なくとも自分の環境ではこれで正常にいってます。swfdumpの結果も特に怪しい感じ無いしね。