フレームスクリプトが書かれていると、外部ActionScriptの実行タイミングが変わる

レアケースなのですが、再現性があるのでメモ

・外部ActionScriptのコンストラクタ内での処理

・フレームの絵の描画

そのMCの置いてあるフレームにある
・フレームスクリプト
の有無によって、順番が変わってしまう
という現象です。

すごく文章で説明しづらいので、サンプルを見てください

ファイルをダウンロード

コンストラクタにはこのように書いてあります


class Test extends MovieClip{
public function Test(){
trace("Test");
_alpha = 0;
}
}

本来、予想される正しい動作はMC置いてあるフレームに到達したときには「見えない」です。

ところが、

●test1.fla
ボタンクリックでMCがいるフレームに飛ばしているのですがチラっと見えます。

●test2.fla
そのフレームスクリプトにコメントをいれるとなぜか直ります。

●test3.fla
タイムラインのみで作ればちゃんと動きます。

本来は画面描画の前にコンストラクタが実行されるはずなのですが、中途半端に内部スクリプトと外部スクリプトを併用すると、上記のような振る舞いになってしまいます。

仕様というかバグというか、一定して上記のように動くので回避方法としてはこういう場面を作らないことが一番です。

以下kaniくん考察〜〜
どうもtest1.flaではフレームの移動がエンターフレームベースで非同期になり実行順序がばらつくみたいです。
コメントとを入れる場合は、そのフレームにActionScriptがあると考えて実行順序を守ります

test3.flaは普通にアニメーションをタイムラインベースで流してるので実行順序は守られています
〜〜〜〜

レアケースの話でした