Progression 02 シーン遷移
単純なシーン遷移のサンプル
ソース
package { import jp.progression.*; import jp.progression.casts.*; import jp.progression.config.*; import jp.progression.debug.*; /** * ... * @author matsu4512 */ public class Main extends CastDocument { public function Main() { super( "index", IndexScene, new WebConfig() ); } /** * SWF ファイルの読み込みが完了し、stage 及び loaderInfo にアクセス可能になった場合に送出されます。 */ protected override function atReady():void { // 開発者用に Progression の動作状況を出力します。 Debugger.addTarget( manager ); // 最初のシーンに移動します。 manager.goto( manager.syncedSceneId ); } } } import caurina.transitions.properties.*; import flash.display.*; import flash.text.*; import jp.progression.casts.*; import jp.progression.casts.buttons.*; import jp.progression.commands.*; import jp.progression.commands.display.*; import jp.progression.commands.lists.*; import jp.progression.commands.net.*; import jp.progression.commands.tweens.*; import jp.progression.data.*; import jp.progression.events.*; import jp.progression.scenes.*; class IndexScene extends SceneObject { private var page1:Scene, page2:Scene, page3:Scene; private var btn1:NewCastButton, btn2:NewCastButton, btn3:NewCastButton; public function IndexScene() { // シーンを作成 page1 = new Scene("page1", 0xFF); page2 = new Scene("page2", 0xFF00); page3 = new Scene("page3", 0xFF0000); //シーンを追加 addScene(page1); addScene(page2); addScene(page3); //ボタンの生成 btn1 = new NewCastButton("/index/page1", "page1", { x:50, y:50 } ); btn2 = new NewCastButton("/index/page2", "page2", { x:50, y:150 } ); btn3 = new NewCastButton("/index/page3", "page3", { x:50, y:250 } ); } //このシーンに移動してきたときに実行 override protected function atSceneInit():void { //ボタンを表示 addCommand( new AddChild(container, btn1), new AddChild(container, btn2), new AddChild(container, btn3) ); } //別のシーンへの移動時に実行 override protected function atSceneGoto():void { //ボタンを削除 addCommand( new RemoveChild(container, btn1), new RemoveChild(container, btn2), new RemoveChild(container, btn3) ); } } class Scene extends SceneObject { private var sp:Sprite; private var btn:NewCastButton; public function Scene(name:String, color:uint) { super(name); sp = new Sprite(); sp.graphics.beginFill(color); sp.graphics.drawRect(0, 0, 500, 500); sp.graphics.endFill(); var txt:TextField = new TextField(); txt.defaultTextFormat = new TextFormat(null, 100); txt.autoSize = TextFieldAutoSize.LEFT; txt.text = name; txt.x = 250 - txt.width / 2; txt.y = 250 - txt.height / 2; sp.addChild(txt); btn = new NewCastButton("/index/", "Index", { x:50, y:50 } ); } //このシーンに移動してきたときに実行 override protected function atSceneInit():void { addCommand( new AddChild(container, sp), new AddChild(container, btn) ); } //別のシーンへの移動時に実行 override protected function atSceneGoto():void { addCommand( new RemoveChild(container, btn), new RemoveChild(container, sp) ); } } class NewCastButton extends CastButton { public function NewCastButton(link:String, label:String, initObject:Object = null) { super( initObject ); var txt:TextField = new TextField(); txt.text = label; addChild(txt); // 移動先となるシーン識別子を設定します。 sceneId = new SceneId( link ); } }