Flash As3.0 游戏开发小结

转自: http://blog.csdn.net/chongtianfeiyu/article/details/8096446

ActionScript3.0(以下简称AS3.0)开发flash游戏目前已经成为主流使用的flash脚本语言。

AS3.0是面向对像的脚本语言,它由JAVA衍生出来,所以它拥有JAVA的编写特点。

它比AS2.0的运算速度提高近十倍,但是局限还是有的,所以在开发AS3.0的游戏有许多需要开发者注意的地方:
1.Document Class或Main 类
       顾名思义,Documet Class就是“文档类”,AS3.0的编写不再像AS2.0把大部分代码写在时间轴上或影片剪辑上,但是依然可以把代码写在时间轴上。如果这样的话,给后期修改或查找BUG带来了很大的不便,所以尽量不要把大段代码写在文档类中。
2.强大的事件侦听器Event
       AS3.0中,Event事件的功能变得十分的强大,我们再也不用onPress或onRelease来处理按钮事件了,取而代之的都变成了事件处理。所以原先的程序也要随之进行变化。这里可以用flash自带的event事件,同时也可以定义自定义的事。模块与模块之间不仅可以用回调函数来传递数据,也可以用事件侦听的方式来判断数据的变化。

3. XML的支持
        AS3.0中XML的功能比AS2.0优秀很多,代码效率和执行效率要优于AS2.0,功能非常全面,如果制作程序中需要十分多的数据,可以用XML进行外部存储读取。
4.AS3.0的数据存储方式
       使用如下几种存取数据方式进行存取100万次运算,所花时间依次为(单位为毫秒,ms):如下几种存取数据方式100万次存取运算效率依次为:* 类定义中的属性(如public、private类属性) 135 毫秒Point类对象 140毫秒Rectangle类对象(x等属性) 140ms* Array类对象 270ms* Object类对象 500 ms动态类动态属性 550* Rectangle类对象(left等属性) 700* 自定义类getter/setter 1000 自定义类Function 1000最快的是第一类,速度是Array的两倍,Object的四倍,getter/setter的约八倍。存取坐标要用Point和Rectangle,比Array快的多。 Object和动态类效率较低,一般情况下请尽量使用密封类。
5.游戏开发中需注意的事项:
例1.代码优化:在编写程序时不合理的代码编写习惯可能会影响程序的处理性能,因此好的书写习惯能提高程序的性能。
例1:
Var i:int = 0;
for(i = 0; i < array.length; i++)
{…}
的写法就比
For(var i:int = 0; I < array.length;i++)
{…}要好很多;

例2:清除容器中的所有物件可以用
While(spt. numChildren > 0)
{
 Spt.removeChildAt(0);
}来完成

例3:场景中的MovieClip或Sprite在清除之前一定要用removeEventListener把上面所有的事件清除掉,这样系统才会gc掉。

例4:请使用cacheAsBitmap进行位图缓存,对图形颜色多,元素多的加快CPU的处理速度。

例5:位图在运算速度上很快,但是在尺寸上变得很大,而矢量图虽然尺寸很小,但是在图形渲染上很占CPU资源,所以要选择尽量色差小,颜色简单的图形用矢量来做。大量复杂的图形可用位图代替。

例6:资源的压缩,矢量图中线段数量也决定了图形渲染的快慢。可以采用flash软件自带的修改->形状->优化,减少图形中的线条的数量。

例7: 用unit()或int()代替取整运算Math.floor()和Math.ceil()。比如var test:uint = uint(1.5);要比var test:Number = Math.floor(1.5);快;而var test:uint = uint(1.5)+1;要比var test:Number = Math.ceil(1.5);也快。如果是Math.floor(),还可以用位运算(>>0)来代替。比如var test:uint =1.5>>0,比unit()或int()更快。
        用乘-1来代替Math.abs()方法。比如var nn:Number = -23;var test:Number= nn < 0 ? nn * -1 : nn;要比var nn:Number = -23;var test:Number = Math.abs(nn);快。当然还有更多的优化计算的方法。一般来说,低级运算要比高级运算速度;内部方法比调用其他方法速度快。另外要注意的是,这些方法有的时候可能并一定适用。

例8: 在各种重要的代码优化手段中,有这么一条:在定义局部变量的时候,一定要用关键字var来定义,因为在Flash播放器中,局部变量的运行速度更快,而且在他们的作用域外是不占用系统资源的。

例9在编写游戏时尽量不要把帧频设得太高,太高的帧频会导致CPU计算量加大。

例10:我们常用的关键字:for in 可以代替其它的循环语句。(这点值得商榷)

例11:不要过多使用 Object 类型。数据类型注释应力求精确,这样可以提高性能。只有在没有适当的备选数据类型时,才使用 Object 类型。同时也便于代码管理,时刻知道对象的类型和作用。同时也有利于编译器编译时优化

例12:对于类型是MovieClip等需要绘图的对像,能重复用的就重复用,比如删除一个对像后如果重新使用它,先判断if(mc == null)存不存在,存在就不再给它赋一个新的对像了。(AS3.0尽量用Shape类)

例13:善用对像池功能,在制作大型游戏时,往往会用到很多一模一样的影片剪辑,把从场景中删除的对像放入对像池中,当需要用到对像时,可以从池中直接创建新的对像来保证内存的占用。

例14:Lib注册机制,在制作大型的游戏时,往往是多人分工,一个游戏维护起来也相当复杂,这时可以采用Lib文件的注册方式添加游戏的事件管理。统一由一个时间片,或一个侦听池管理。减少了游戏运行时的负担,也起到了多人维护的作用。


阅读更多
个人分类: ActionScript 3.0 & Flash
想对作者说点什么? 我来说一句

Flash AS3.0游戏编程全攻略

2011年11月15日 212KB 下载

as3.0游戏编程大学

2010年08月15日 8.72MB 下载

AS3.0开发资源大合集

2016年02月22日 51.68MB 下载

AS3.0 游戏编程大学

2011年09月09日 753KB 下载

as3.0 大型RPG Flash游戏 期末作业

2015年11月16日 19.92MB 下载

RPG AS3.0 游戏源码

2013年11月27日 25.65MB 下载

flash AS3.0游戏

2015年08月21日 317KB 下载

AS3.0游戏18例源码包

2012年07月18日 36.06MB 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭