ページへ戻る
+ Links
印刷
Starling+Feathersで画面遷移
の編集 ::
NJF Wiki
xpwiki
:
Starling+Feathersで画面遷移
の編集
# b78a55bf の編集
ページ内容:
*ScreenNavigator [#b78a55bf] ScreenをScreenNavigatorに登録すると画面遷移が簡単にできるようになる。 ScreenNavigatorへの登録はScreenNavigatorItemを使う。 var screenNavigator:ScreenNavigator = new ScreenNavigator(); baseSp.addChild(screenNavigator); var screenNavigatorItem:ScreenNavigatorItem = new ScreenNavigatorItem( new TestScreen1() ); screenNavigator.addScreen( "screen1", screenNavigatorItem ); あとは、 screenNavigator.showScreen("screen1"); とすればそのスクリーンが表示される。この表示される時にScreenのinitializeメソッドが呼ばれる。 ここで注意しないといけないのは、ScreenNavigatorItemはScreenのクラスとインスタンスのどちらかをコンストラクタ引数として取り得ることである。つまり、 new ScreenNavigatorItem( TestScreen1 ); としても、 new ScreenNavigatorItem( new TestScreen1() ); としてもScreenNavigatorItemのインスタンスは作れる。これらは一見同じように動作するが、内部的には異なる動作をする。 クラスを与えたときは、''画面遷移のときにdisposeが呼ばれて前のScreenが破棄されメモリが解放される''。 インスタンスを与えたときは、''そのインスタンスが保持され次回に再利用されるので画面遷移でもdisposeが呼ばれない''。 よってメモリを節約したいときはクラスを与えて初期化した方が良い。しかし、画面遷移のたびにdisposeが呼ばれて次にまたインスタンス作成となると非力なモバイル機器ではかなり処理がもたつく。メモリに余裕があるならできるだけインスタンスを与えて初期化した方が良い。 ちなみに私は自動でdisposeが行われないように全てインスタンスで初期化し、自前のdisposeメソッドを作って必要なタイミングに必要なメモリだけ解放している。 ScreenNavigatorItemで便利なのは画面遷移のイベントを設定できることである。つまり、 screenNavigator.setScreenIDForEvent( "screen1Show", "screen1" ); としておくと、ScreenNavigatorに登録したスクリーンで dispatchEventWith("screen1Show"); とすると、screen1のIDの画面へと遷移する。 画面遷移のアニメーションも好みの物に変更できる。たとえばフェイドインなら、 screenNavigator.transition = Fade.createFadeInTransition(); となる。
編集の要約:
Q & A 認証:
ページ更新時は次の質問にお答えください。(プレビュー時は必要ありません)
Q:
日本の首都は?(漢字で)
A:
お名前:
タイムスタンプを変更しない
テキスト整形のルールを表示する