Flash画面遷移フレームワーク「Progression 4」公式ガイド

第6回 タイムラインスタイル(2)

この記事を読むのに必要な時間:およそ 10.5 分

上位シーンでの削除処理

「american」シーンに遷移後,⁠CloseButton」がボタンとして機能しているのが確認できます。⁠american」シーンと同様に「french」⁠mame」シーンも設定していくのですが,今はそれぞれのシーンで「onSceneUnload」イベントハンドラメソッド内で共通の表示オブジェクトを削除しています。これを,1つにまとめて処理しましょう。

「gallery」シーンからどのシーンに遷移するかは分かりませんが,⁠american」⁠french」⁠mame」それぞれのシーンで「onSceneUnload」イベントハンドラメソッドが呼び出された時は必ず「gallery」シーンに遷移します。したがって,⁠gallery」シーンのイベントハンドラメソッドで削除処理を設定します。⁠gallery」シーンから見て,下位のシーンから遷移してくる場合なので,⁠onSceneInit」イベントハンドラメソッドを使用しましょう。

リスト13 ⁠onSceneInit」の設定

// 共通部分の表示オブジェクトの削除処理を行います。
gallery.onSceneInit = function():void {
  this.addCommand(
    new RemoveChild( this.container , photoBG ),
    new RemoveChild( this.container , closeButton ),
    new RemoveChild( this.container , photoBase ),
    new RemoveChild( this.container , backButton ),
    new RemoveChild( this.container , nextButton )
  );
}

「american」シーンの「onSceneUnload」イベントハンドラメソッドに記述していた共通部分の表示オブジェクトの削除処理は削除します。シーン毎に表示される2つの表示オブジェクトは先ほどのままで結構です。

リスト14 ⁠american」シーンの設定

// americanシーンの表示オブジェクトの削除設定を行います。
american.onSceneUnload = function():void {
  this.addCommand(
	new RemoveChild( this.container , americanPhoto ),
	new RemoveChild( this.container , americanText )
  );
}

設定が完了したら,ムービーを書き出して確認してみましょう。設定を変更する前と同じ動きをしているのが確認できます。

「american」シーンと同様に,⁠french」⁠mame」シーンも設定を行ってください。

リスト15 ⁠french」シーンの設定

// インスタンスを生成します。
var frenchPhoto:FrenchPhoto = new FrenchPhoto ();
frenchPhoto.x = 120;
frenchPhoto.y = 40;
// インスタンスを生成します。
var frenchText:FrenchText = new FrenchText ();
frenchText.x = 119;
frenchText.y = 354;

// frenchシーンの表示オブジェクトの表示設定を行います。
french.onSceneLoad = function():void {
  this.addCommand(
    new AddChild( this.container , photoBG ),
    new AddChild( this.container , closeButton ),
    new AddChild( this.container , photoBase ),
    new AddChild( this.container , backButton ),
    new AddChild( this.container , nextButton ),
    new AddChild( this.container , frenchPhoto ),
    new AddChild( this.container , frenchText )
  );
}

// frenchシーンの表示オブジェクトの削除設定を行います。
french.onSceneUnload = function():void {
  this.addCommand(
    new RemoveChild( this.container , frenchPhoto ),
    new RemoveChild( this.container , frenchText )
  );
} 

リスト16 ⁠mame」シーンの設定

// インスタンスを生成します。
var mamePhoto:MamePhoto = new MamePhoto ();
mamePhoto.x = 120;
mamePhoto.y = 40;
// インスタンスを生成します。
var mameText:MameText = new MameText ();
mameText.x = 119;
mameText.y = 354;

// mameシーンの表示オブジェクトの表示設定を行います。
mame.onSceneLoad = function():void {
  this.addCommand(
    new AddChild( this.container , photoBG ),
    new AddChild( this.container , closeButton ),
    new AddChild( this.container , photoBase ),
    new AddChild( this.container , backButton ),
    new AddChild( this.container , nextButton ),
    new AddChild( this.container , mamePhoto),
    new AddChild( this.container , mameText)
  );
}

// mameシーンの表示オブジェクトの削除設定を行います。
mame.onSceneUnload = function():void {
  this.addCommand(
    new RemoveChild( this.container , mamePhoto),
    new RemoveChild( this.container , mameText)
  );
}

設定が完了したら,ムービーで確認しましょう。それぞれのシーンに遷移すると,表示オブジェクトが表示されます。

図17 ⁠french」表示オブジェクトの確認

図17 「french」表示オブジェクトの確認

図18 ⁠mame」表示オブジェクトの確認

図18 「mame」表示オブジェクトの確認

著者プロフィール

青木健至(あおきたけし)

株式会社CLOQUE. 所属。Flash歴半年。Progression歴半年。Progression無しでのFlash制作は不可。2009年にFlashの技術を会得するために上京し,Progressionプロダクトマネージャーの阿部氏に師事。日々精進中。

http://twitter.com/ichikaku1
URL株式会社CLOQUE