ちょっとはまったのでメモ

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()には注意が必要かもね。