第四步: 游戏界面切换
我们假设我们已经把四个场景都写好了
1.InGameScreen:InGame;
2.WelcomeScreen:Welcome;
3.AboutScreen:About;
4.OverScreen:Over;
那我们怎样在这之间切换?
-----自定义事件
events下 创建一个自定义事件 NavEvent.as用于发送事件
NavEvent.as类
1 package events 2 { 3 import starling.events.Event; 4 5 public class NavEvent extends Event 6 { 7 public static const CHANGESCREENS:String = "changeScreens"; 8 9 public var params:Object; 10 11 public function NavEvent(type:String, bubbles:Boolean = false, _params:Object = null) 12 { 13 super(type, bubbles, _params); 14 15 this.params = _params; 16 17 } 18 } 19 }
然后在Game类中添加侦听
this.addEventListener(NavEvent.CHANGESCREENS, onChange);
1 private function onChange(event:NavEvent):void 2 { 3 switch (event.params.id) 4 { 5 case "start": 6 InGameScreen.init(); 7 WelcomeScreen.hide(); 8 AboutScreen.hide(); 9 OverScreen.hide(); 10 break; 11 case "about": 12 InGameScreen.hide(); 13 WelcomeScreen.hide(); 14 AboutScreen.init(); 15 OverScreen.hide(); 16 break; 17 case "back": 18 InGameScreen.hide(); 19 WelcomeScreen.init(); 20 AboutScreen.hide(); 21 OverScreen.hide(); 22 break; 23 case "over": 24 InGameScreen = new InGame(); 25 this.addChild(InGameScreen); 26 InGameScreen.hide(); 27 WelcomeScreen.hide(); 28 AboutScreen.hide(); 29 OverScreen.init(); 30 break; 31 case "ingameback": 32 AboutScreen.hide(); 33 WelcomeScreen.init(); 34 OverScreen.hide(); 35 InGameScreen = new InGame(); 36 this.addChild(InGameScreen); 37 InGameScreen.hide(); 38 break; 39 } 40 }
我们可以看到 在这些不同界面的类中会有init() hide(),其实就是隐藏和显示当前界面
当我需要的时候通过发送事件 来执行我想要的界面
比如 当我在欢迎界面的时候单机 start开始 ,那我就发送 "start" 过去 来切换场景。
this.dispatchEvent(new NavEvent(NavEvent.CHANGESCREENS, true, {id:"start"}));
基本是这样啦。然后游戏的内容就靠策划了~~