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文件的注册方式添加游戏的事件管理。统一由一个时间片,或一个侦听池管理。减少了游戏运行时的负担,也起到了多人维护的作用。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值