上一节我们已经看到可爱的小野猪进度跑起来了,这一节我们需要把游戏场景初始化和进入场景两个部分搞定,开始吧!
初始化场景
1、创建场景管理器
场景里相关的东东都由他来负责管理。
2、创建游戏场景接口定义:
实现接口:
接口定义:![]()
实现接口:3、SceneManager.onInit方法实现![]()
4、用户界面初始化:public function onInit():void { // 添加背景 FBg = JFDynamicResManager.getInstance().displayObjectByName(1, "res0701"); FBg.x = 0; FBg.y = 0; JFApp.appMainSprite.sceneLayer.addChild(FBg); // 游戏区域 FGameScene = new GameScene(); JFApp.appMainSprite.sceneLayer.addChild(FGameScene as DisplayObject); // 鼠标控制层 FMouseCtrlLevel = new UISprite(); FMouseCtrlLevel.graphics.beginFill(0,0); FMouseCtrlLevel.graphics.drawRect(0, 0, JFAppConfig.sceneWidth, JFAppConfig.sceneHeight); FMouseCtrlLevel.graphics.endFill(); FMouseCtrlLevel.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEvent); FMouseCtrlLevel.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownEvent); FMouseCtrlLevel.addEventListener(MouseEvent.MOUSE_OVER, mouseOverEvent); FMouseCtrlLevel.addEventListener(MouseEvent.MOUSE_OUT, mouseOutEvent); FMouseCtrlLevel.addEventListener(MouseEvent.MOUSE_UP, mouseUpEvent); JFApp.appMainSprite.sceneLayer.addChild(FMouseCtrlLevel);}
用户界面相关的东东都有他来管理。接口定义:
实现接口:![]()
这里就先定义一个壳子,以后再慢慢补充里面的内容,内容很多…![]()
进入场景
看到上面的流程我们知道现在要和服务端配合了,搭建服务端不是一件容易的事(下一章将要讲述整个服务端的搭建方法),在这里先做一个离线模式,确保把今天这一节的例子先跑通了。
起初开始开发村神的时候由于服务端人员没有时间,所以我就用这个离线模式把村神单机版本做完了后才开始做联网模式的。本教程是教大家开发社交游戏,单机模式就不深入讲解了。
现在构建离线服务,如下图:
![]()
离线模式初始化,如下图:
![]()
技巧 – 宏定义:
在c或c++语言中我们经常看到下面的语
#ifdef
….
#endif
在ActionScript中我们也可以做到,看到if(DEF::OFFLINE)了吧?就是和c语言中的#ifdef概念一样,我们需要在编译选项中加入一个DEF::OFFLINE就可以了,如下图:![]()
我们看到还有下面两个:
-define DEF::DEBUG true
这个是DEBUG模式,可以利用这个做一些调试信息的输出,正式上线的时候我们只要把编译选项改成 -define DEF::DEBUG false,瞬间世界就都安静啦…
-define DEF::TRACE_SRC true
这个选项也是为了调试方便,在输出调试信息的时候把调用堆栈也输出,这样找Bug还是比较方便的。
注意:要把sdk工程的编译选项中的DEF::OFFLINE设置成true,如下图:
![]()
离线模式搞定后,我继续完成进入场景的代码实现,首先需要监听服务端处理ServerCmd.SYS_ENTER_CMD消息完成事件,如下图:
线服务处理SYS_ENTER_CMD消息,如下图:
好了一切继续就绪了,开始往服务端发出ServerCmd.SYS_ENTER_CMD命令,如下图:
接下来去看看主程序进入场景部分的代码,需要在进入场景成功后把Logo窗口关掉就可以了,如下图:
好了,截个效果图今天就先到这里了,休息一会…
代码下载:点这里下载
从零开始学社交游戏开发(五)