每個Scene是一個project.
ControllerA.swf 去loaded ViewA.swf
ControllerB.swf 去loaded ViewB.swf
Scene之間的切換是利用navigateToURL透過server端去跳轉.
後來需求做了改變, 希望改由client端來控制scene之間的切換,
於是我寫了SceneManager Project來做這件事,
但又希望儘可能不破壞原有兩個Scene Project的程式架構.
所以變成SceneManager 去 create & launch Controller的instance,
原本的UI控制, 遊戲流程的程式邏輯都無變更.
僅在於要做場景切換時,
Controller 同樣先做destroy的動作,
但會透過connection channel 通知SceneManager做跳轉的動作,
而非原本的navigateToURL.
但首先SceneManager在create & launch Controller的instance時,
原先可以work的場景檔會出一些問題,
如:MovieClip的currentFrameLabel屬性變成undefined,
如:MovieClip的currentFrameLabel屬性變成undefined,
SimpleButton註冊的事件無反應,
有些MovieClip的效果不見了,
甚至有的MovieClip消失在場景上了.
試了好多地方, 如改變Load swf的方法 ( Loader, BulkLoader),
initialize controller instance的時間點.
最後才發現問題是沒在SceneManager Project 加上-target-player=10.1.0的設定.
(ControllerA 和ControllerB本身兩個Project都有加上面這個參數)
沒有留言:
張貼留言