Flash As3.0 游戏开发小结

转载 2014年02月16日 21:15:11

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


Flash as3.0制作的16个小游戏源码。

  • 2013年09月09日 12:35
  • 23.38MB
  • 下载

AS3.0游戏18例源码包

  • 2012年07月18日 14:32
  • 36.06MB
  • 下载

用as3.0写的简单的三消游戏demo

在学习as十一天之后(其实是从一开始就直接开始写,然后边写边学),这是一个三消类游戏,在400*300大小的区域内随机生成8*6个小方格(颜色随机)。目前实现了移动,消除,填充。游戏现在还有bug,其...
  • CauchyRieman
  • CauchyRieman
  • 2016年07月08日 17:24
  • 772

flash as3.0 空战游戏源码

  • 2011年09月09日 17:05
  • 10.31MB
  • 下载

捕鱼达人as3.0flash游戏源码期末作业

  • 2015年11月16日 19:59
  • 16.33MB
  • 下载

使用AS3.0开发FC超级马里奥

前言:制作这个游戏完全是因为教手持设备开发的老师布置大作业,要求组队或者个人完成一个手持应用的开发。其实一开始我就后悔报这门选修课,我只玩C,不喜欢JAVA,结果教的偏偏是安卓应用开发,那你倒是取名叫...
  • qq_25852279
  • qq_25852279
  • 2016年05月19日 00:11
  • 1329

RPG AS3.0 游戏源码

  • 2013年11月27日 14:09
  • 25.65MB
  • 下载

Flash游戏中人物走动与场景自动滚屏AS3.0代码.rar

  • 2010年10月20日 18:35
  • 92KB
  • 下载

选择用AS3语言开发HTML5游戏的优势!

我一直有一个怀疑,是否能使用AS3开发JS,两个虽然很想象,但毕竟不是同一个语言,使用Laya编译器编译出来的JS能否和AS3对应上,使用过一段时间后,这种顾虑很快被打消了。...
  • vsyoyo
  • vsyoyo
  • 2016年11月25日 10:59
  • 788

Flash游戏中人物走动与场景自动滚屏AS3.0代码

  • 2009年09月23日 17:06
  • 92KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flash As3.0 游戏开发小结
举报原因:
原因补充:

(最多只允许输入30个字)