[AS]progression Sceneの_onLoad中にコマンドをinterrupt()すると良くない?
ちょっとはまったのでメモ
progressionのコマンド機能を使ってオープニングムービー付きサイトを作りました。
で、当然ムービーはスキップできるようにしたいな、と。
コマンドを停止させるにはinterupt()という命令でOK。
ただ停止したいコマンドを指定せねばなので、_onLoad()内のaddCommand内に書いてたコマンドを、別でSerialListを作ってそこにaddCommand、それを_onLoad()のaddCommandにinsertCommand()する感じにしました。
↓だいたいこんなかんじ
(indexSceneに書いたってことで話を進めます)
protected override function _onLoad():void { var sList:SerialList = new SerialList(); sList.addCommand( new Trace("insertCommand sList") ) addCommand( insertCommand(sList) ); }
で、skipボタン用意して押したら、sList.interrupt()を実行して、その後はスキップ後の処理を実行するような感じに。
結果としては、止まった。
でも、通常_onLoad()後に行われる_onInit()は実行されず。
強制ストップだからそういうもんなのかな。
で、ここで問題が。
indexSceneから移動しても、_onGotoイベント、_onUnLoadイベントが発行されないご様子。
_onInit()が実行されてないとだめなのか?と思ったので・・・
スキップしたいコマンドをonInit内に記述して、onInit()のコマンドをinterruptしてみると、
//IndexSceneoの_onInitに書いてます。 protected override function _onInit():void { var sList:SerialList = new SerialList(); sList.addCommand( new Trace("insertCommand sList") ) addCommand( insertCommand(sList) ); }
こんどはシーン移動の際に_onGotoイベントが問題なく発行されました。
_onLoad中でのコマンドのinterrupt()には注意が必要かもね。
Tweet