Flash As3.0 游戏开发小结

发布时间:2016-12-7 18:35:54 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Flash As3.0 游戏开发小结",主要涉及到Flash As3.0 游戏开发小结方面的内容,对于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文件的注册方式添加游戏的事件管理。统一由一个时间片,或一个侦听池管理。减少了游戏运行时的负担,也起到了多人维护的作用。

上一篇:表空间和数据文件
下一篇:JNDI之我见

相关文章

相关评论