携帯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の結果も特に怪しい感じ無いしね。