パッケージの構成です。
FeathersScreenExample.as
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.geom.Rectangle; import starling.core.Starling; [SWF(width="960",height="640",frameRate="60",backgroundColor="#2f2f2f")] public class FeathersScreenExample extends Sprite { private var _starling:Starling; public function FeathersScreenExample() { if(this.stage) { this.stage.scaleMode = StageScaleMode.NO_SCALE; this.stage.align = StageAlign.TOP_LEFT; } this.mouseEnabled = this.mouseChildren = false; this.loaderInfo.addEventListener(Event.COMPLETE, loaderInfo_completeHandler); } private function loaderInfo_completeHandler(event:Event):void { Starling.handleLostContext = true; Starling.multitouchEnabled = true; this._starling = new Starling(Main, this.stage); this._starling.enableErrorChecking = false; this._starling.start(); this.stage.addEventListener(Event.RESIZE, stage_resizeHandler, false, int.MAX_VALUE, true); this.stage.addEventListener(Event.DEACTIVATE, stage_deactivateHandler, false, 0, true); } private function stage_resizeHandler(event:Event):void { this._starling.stage.stageWidth = this.stage.stageWidth; this._starling.stage.stageHeight = this.stage.stageHeight; const viewPort:Rectangle = this._starling.viewPort; viewPort.width = this.stage.stageWidth; viewPort.height = this.stage.stageHeight; try { this._starling.viewPort = viewPort; } catch(error:Error) {} } private function stage_deactivateHandler(event:Event):void { this._starling.stop(); this.stage.addEventListener(Event.ACTIVATE, stage_activateHandler, false, 0, true); } private function stage_activateHandler(event:Event):void { this.stage.removeEventListener(Event.ACTIVATE, stage_activateHandler); this._starling.start(); } } }Main.as
package { import feathers.controls.ScreenNavigator; import feathers.controls.ScreenNavigatorItem; import feathers.controls.ScrollContainer; import feathers.motion.transitions.ScreenSlidingStackTransitionManager; import feathers.themes.MetalWorksMobileTheme; import screens.MainMenuScreen; import screens.Sub1Screen; import screens.Sub2ChildScreen; import screens.Sub2Screen; import starling.display.Sprite; import starling.events.Event; public class Main extends Sprite { public static const MAIN_MENU:String = "mainMenu"; public static const SUB1_SCREEN:String = "sub1Screen"; public static const SUB2_SCREEN:String = "sub2Screen"; public static const SUB2_CHILD_SCREEN:String = "sub2ChildScreen"; private var _theme:MetalWorksMobileTheme; private var _container:ScrollContainer; private var _navigator:ScreenNavigator; private var _menu:MainMenuScreen; private var _transitionManager:ScreenSlidingStackTransitionManager; private static const MAIN_MENU_EVENTS:Object = { showSub1Screen: SUB1_SCREEN, showSub2Screen: SUB2_SCREEN } public function Main() { super(); this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler); } private function addedToStageHandler(event:Event):void { this._theme = new MetalWorksMobileTheme(this.stage); this._navigator = new ScreenNavigator(); this._navigator.addScreen(SUB1_SCREEN,new ScreenNavigatorItem(Sub1Screen)); this._navigator.addScreen(SUB2_SCREEN, new ScreenNavigatorItem(Sub2Screen,{showChildScreen:SUB2_CHILD_SCREEN})); this._navigator.addScreen(SUB2_CHILD_SCREEN,new ScreenNavigatorItem(Sub2ChildScreen)); this._navigator.addScreen(MAIN_MENU,new ScreenNavigatorItem(MainMenuScreen,MAIN_MENU_EVENTS)); this.addChild(this._navigator); this._transitionManager = new ScreenSlidingStackTransitionManager(this._navigator); this._transitionManager.duration = 0.4; this._navigator.showScreen(MAIN_MENU); } } }
0 件のコメント:
コメントを投稿