Progressionではシーンを用意しておけばGotoコマンドで移動できるのですが、
シーン毎に処理を変えたい場合など、ドコにいったかを把握しておきたい場合などありますよね。
↓そんな時はProcessEventを使うと良いらしいとのことなのでテスト。
・「Progression3都物語...」- blog.naggg.jp
ProcessEventには以下のものがあります。
・PROCESS_COMPLETE
・PROCESS_ERROR
・PROCESS_EVENT
・PROCESS_INTERRUPT
・PROCESS_SCENE
・PROCESS_START
IndexScene内で以下コードを追加してどのタイミングで呼ばれているかチェックしてみます。
IndexScene.as
public function IndexScene() {
progression.addEventListener(ProcessEvent.PROCESS_EVENT, onEvent);
progression.addEventListener(ProcessEvent.PROCESS_SCENE, onEvent);
progression.addEventListener(ProcessEvent.PROCESS_START , onEvent);
progression.addEventListener(ProcessEvent.PROCESS_INTERRUPT, onEvent);
progression.addEventListener(ProcessEvent.PROCESS_ERROR, onEvent);
progression.addEventListener(ProcessEvent.PROCESS_COMPLETE, onEvent);
}
private function onEvent(event:ProcessEvent):void {
trace("ProcessEvent >>>>>>>> type:"+event.type, ",sceneId:"+event.scene.sceneId+"\n");
}
ProcessEvent >>>>>>>> type:processStart ,sceneId:/index
[LOG] /index シーンの goto イベントを実行。
ProcessEvent >>>>>>>> type:processEvent ,sceneId:/index
[LOG] /index/scene1 シーンに移動。
ProcessEvent >>>>>>>> type:processScene ,sceneId:/index/scene1
[LOG] /index/scene1 シーンの load イベントを実行。
ProcessEvent >>>>>>>> type:processEvent ,sceneId:/index/scene1
[LOG] /index/scene1 シーンの init イベントを実行。
ProcessEvent >>>>>>>> type:processEvent ,sceneId:/index/scene1
ProcessEvent >>>>>>>> type:processComplete ,sceneId:/index/scene1
まず頭でprocessStartが来て最後にprocessCompleteが送出されます。
各シーンのSceneEventの度にprocessEventも送出されます。
processInterruptは途中中断した時、processErrorは移動シーンが無かった場合に送出されるようです。
移動後に処理を分けたい場合はprocessCompleteのリスナーでevent.scene.sceneIdまたはevent.scene.idを利用して分けるのがよさそうです。


コメントする