[AS]progression コマンドの順番についてのメモ
ちょっと混乱したので現象をメモしておこう。
まずはソースを、
indexSceneの_onInitに書いてます。
protected override function _onInit():void { // 実行したいコマンドを登録する var sList0:SerialList = new SerialList(); sList0.addCommand( function() { trace("sList0"); } ); var sList1:SerialList = new SerialList(); sList1.addCommand( function() { trace("sList1"); } ); var sList2:SerialList = new SerialList(); sList2.addCommand( function() { trace("sList2"); } ); var sList3:SerialList = new SerialList(); sList3.addCommand( function() { trace("sList3"); } ); var sList4:SerialList = new SerialList(); sList4.addCommand( function() { trace("sList4"); } ); var sList5:SerialList = new SerialList(); sList5.addCommand( function() { trace("sList5"); } ); // addCommand( function() { trace("defolt addCommand Start"); }, addCommand(sList0), function() { insertCommand(sList2); }, addCommand(sList1), function() { trace("defolt addCommand End"); }, insertCommand(sList4) ); // insertCommand(sList5); insertCommand(sList3); }
で、traceされる結果は、
sList3
sList5
sList4
sList0
sList1
defolt addCommand Start
sList2
defolt addCommand End
こんな順番。
気づいた点は、
_onInit()内に、insertCommand()をいくらでも書けるってこと。
そのinsertCommandはexecute()不要で、順番的には、addCommandよりも先になる。
さらに一番最後にinsertCommandしたものが実質一番最初(addCommandよりも先)に実行される、みたいね。
では、addCommand内でinsertCommandした場合はどうなるか。
これは少し注意が必要ね。
直接、insertCommandした場合は、addCommand内で一番最初に実行される。
でもfunction内でinsertCommandした場合は、既存のaddCommandの順番内に純粋に挿入される感じ。
Tweet