感谢大家的支持,后面会继续更新,请大家放心。整个系列更新将持续15~20天时间。不过最近有点小忙,更新频率可能不定,但一般不会超过两天。
修改昨天的一个错误:
不管用的是那个版本的Flash Builder 4.7,请无视第四步到第七步,不需要作此修改。原因是我把后面的一部分内容看错,提前发出来了,在这里向大家表示道歉,原帖正在修改中,给大家带来的误解尽情原谅。
不说废话,昨天已经把我们需要的环境搭建好了,我们今天就开始来写代码吧!
一、代码结构规划
如图所示,请手动建立这些包。
app.game:游戏除初始化类以外的所有类;
app.game.core:存放一下游戏的核心类;
app.game.events:存放游戏所需要的事件类,这些类包括从AS3的Event原生继承下来的,也包括Starling的Event继承下来的;
app.game.mvc:游戏MVC的核;
app.game.mvc.controllers:游戏MVC中的控制器;
app.game.mvc.models.data:游戏MVC中的模型之静态数据;
app.game.mvc.models.env:游戏MVC中的模型之系统初始化数据;
app.game.mvc.models.message:游戏MVC中的模型之与服务器交互的数据类;
app.game.mvc.views:游戏MVC中的视图;
app.game.uis:游戏里面所有UI存放的地方,这个地址将UI和View分开,可以很快速的更换UI的所有部分,View里面可以少量更改,或者不更改都不影响整个游戏;
app.game.uis.controls:游戏里面自定义的控件;
app.game.uis.controls.renderers:游戏里用的一些渲染器;
app.game.utils:游戏工具包。
这里其实还有一种分法,就是每一个功能模块下各有一个mvc包,这样的分发更适合中大型游戏,一个人有一个独立的模块这样去做。像我们的《暗黑》其实没有必要这样分,有点浪费,更显得凌乱。毕竟《暗黑》不是一个大游戏啊。
二、初始化
我们先预设一下我们的游戏大小,背景颜色,和帧之类的东西。在Main类声明上面填上这么一句就OK了: 这句话就是说明,我们游戏的宽为480px,高800px,帧为60,背景为黑色,当然你可以随心所欲的更改。
AS游戏有个很重要的点,就是我们所有的干活必须要等Adobe他们把我们的舞台(stage)初始化好。不然,你啥都别想干了。所以我们在Main里面干的第一件事情理论上来说就是检测stage是否存在的问题。如下面的代码所示: 初碰AS3的人童鞋们看见 stage ? initialize() : addEventListener(...) 这样的语句别害怕啊,其实写成这样,就明白了: 友情提示一点:事件监听用完,如果不在复用,请及时删除掉,可以节省一点点的内存,从小地方做起,就不用后面费很大的功夫,做游戏优化了。
开始执行initialize()方法了。好了,我们现在已经可以确保在stage上活动了,那么设置一下,stage的align和scaleMode,基本上所有的AS的游戏都是这两句: 大家都想出名的,所以很多游戏刚开始的时候都会有一个图来显示公司的logo之类的,我们就不免俗了,也来这么一套。嘿嘿就帮大鸡蛋再出个名吧!就用Default.png文件(取自《暗黑》)。
我们继续在initialize()方法里添加代码吧,如下所示: 这样图就显示出来了(在下载的代码中,图片加上了一些特效)。来继续玩,开始启动Starling,这个才是重点的。
新建一个DiabloWorld类跟Main同级包下面,必须继承自starling.display.Sprite类,一定要注意父类,千万别继承自flash.display.Sprite类。由DiabloWorld来做游戏的Starling和StarlingMVC启动器。如果你已经了解了StarlingMVC,请为它提供ModelProvider,ViewProvider和ControllerProvider(请自行建立这3个类在app.game.mvc包下,需要继承com.creativebottle.starlingmvc.beans.BeanProvider)。这里不在详述StarlingMVC了。请看如下代码: 如此StarlingMVC已经完成了初始化使命,我们回到Main里面对这个进行调用,让它起作用。还记得上面演示代码中的startStarling()方法吗,对,就是它,我们在这个里面调用DiabloWorld。如代码所示:
修改昨天的一个错误:
不管用的是那个版本的Flash Builder 4.7,请无视第四步到第七步,不需要作此修改。原因是我把后面的一部分内容看错,提前发出来了,在这里向大家表示道歉,原帖正在修改中,给大家带来的误解尽情原谅。
不说废话,昨天已经把我们需要的环境搭建好了,我们今天就开始来写代码吧!
一、代码结构规划
如图所示,请手动建立这些包。
![](http://down.9miao.com/attachment/forum/201310/25/175203hqmm2moku66i962h.png)
app.game:游戏除初始化类以外的所有类;
app.game.core:存放一下游戏的核心类;
app.game.events:存放游戏所需要的事件类,这些类包括从AS3的Event原生继承下来的,也包括Starling的Event继承下来的;
app.game.mvc:游戏MVC的核;
app.game.mvc.controllers:游戏MVC中的控制器;
app.game.mvc.models.data:游戏MVC中的模型之静态数据;
app.game.mvc.models.env:游戏MVC中的模型之系统初始化数据;
app.game.mvc.models.message:游戏MVC中的模型之与服务器交互的数据类;
app.game.mvc.views:游戏MVC中的视图;
app.game.uis:游戏里面所有UI存放的地方,这个地址将UI和View分开,可以很快速的更换UI的所有部分,View里面可以少量更改,或者不更改都不影响整个游戏;
app.game.uis.controls:游戏里面自定义的控件;
app.game.uis.controls.renderers:游戏里用的一些渲染器;
app.game.utils:游戏工具包。
这里其实还有一种分法,就是每一个功能模块下各有一个mvc包,这样的分发更适合中大型游戏,一个人有一个独立的模块这样去做。像我们的《暗黑》其实没有必要这样分,有点浪费,更显得凌乱。毕竟《暗黑》不是一个大游戏啊。
二、初始化
我们先预设一下我们的游戏大小,背景颜色,和帧之类的东西。在Main类声明上面填上这么一句就OK了: 这句话就是说明,我们游戏的宽为480px,高800px,帧为60,背景为黑色,当然你可以随心所欲的更改。
AS游戏有个很重要的点,就是我们所有的干活必须要等Adobe他们把我们的舞台(stage)初始化好。不然,你啥都别想干了。所以我们在Main里面干的第一件事情理论上来说就是检测stage是否存在的问题。如下面的代码所示: 初碰AS3的人童鞋们看见 stage ? initialize() : addEventListener(...) 这样的语句别害怕啊,其实写成这样,就明白了: 友情提示一点:事件监听用完,如果不在复用,请及时删除掉,可以节省一点点的内存,从小地方做起,就不用后面费很大的功夫,做游戏优化了。
开始执行initialize()方法了。好了,我们现在已经可以确保在stage上活动了,那么设置一下,stage的align和scaleMode,基本上所有的AS的游戏都是这两句: 大家都想出名的,所以很多游戏刚开始的时候都会有一个图来显示公司的logo之类的,我们就不免俗了,也来这么一套。嘿嘿就帮大鸡蛋再出个名吧!就用Default.png文件(取自《暗黑》)。
我们继续在initialize()方法里添加代码吧,如下所示: 这样图就显示出来了(在下载的代码中,图片加上了一些特效)。来继续玩,开始启动Starling,这个才是重点的。
新建一个DiabloWorld类跟Main同级包下面,必须继承自starling.display.Sprite类,一定要注意父类,千万别继承自flash.display.Sprite类。由DiabloWorld来做游戏的Starling和StarlingMVC启动器。如果你已经了解了StarlingMVC,请为它提供ModelProvider,ViewProvider和ControllerProvider(请自行建立这3个类在app.game.mvc包下,需要继承com.creativebottle.starlingmvc.beans.BeanProvider)。这里不在详述StarlingMVC了。请看如下代码: 如此StarlingMVC已经完成了初始化使命,我们回到Main里面对这个进行调用,让它起作用。还记得上面演示代码中的startStarling()方法吗,对,就是它,我们在这个里面调用DiabloWorld。如代码所示:
运行一下,我们想要的效果出来,今天就先到这里了。下面是今天说到的完整代码,如果有不明白的地方,可以直接回帖,私信,或者在QQ群中@北京-Z。