starling1.2 游戏思路<2>

 第四步: 游戏界面切换

 

我们假设我们已经把四个场景都写好了

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"}));

 

 基本是这样啦。然后游戏的内容就靠策划了~~

posted @ 2012-12-08 15:28  洪小瑶  阅读(439)  评论(0编辑  收藏  举报