Progression コマンド実行順序を調べてみる
via:コマンドについて色々書いてみる – Is It So Easy?
this.addCommand( new Trace("コマンドスタート"), function ():void{ trace("コマンド2") this.parent.insertCommand( new Trace("コマンド3"), function(){ this.parent.addCommand( new Trace("コマンド4") ); this.parent.insertCommand( new Trace("コマンド5") ) } ) trace("コマンド6"); }, new Trace("コマンド終わりよ") );
実行結果:
コマンドスタート
コマンド2
コマンド6
コマンド3
コマンド5
コマンド終わりよ
コマンド4
はてさて。
まず、コマンド2は上から来てるコマンドの最初なので、2番目に実行されるのはOK。さらに、コマンド4がaddCommandなので、コマンド終わりの次にくるのはOK。
コマンド6は、insertCommandの次ですが、functionの中身と考えると3番目に来るらしい(ここからややこしい)。その中でさらにinsertCommandしているのでコマンド5はfunctionの最後で実行される。ここまでがひとつの Func。で、コマンド終わりよ。と表示される。
すべてが一つのaddCommand内で、insertCommandを重ねて作るやり方をよくやるんですが、これがややこしやの元凶なのか! というメモ。