- 浏览: 108533 次
- 性别:
- 来自: 广州
文章分类
最新评论
var obj:Object = {}; 比
var obj:Object = new Object(); 好
var arr:Array = []; 比
var arr:Array = new Array(); 好
for (var i:int=0, len=arr.length; i<len; i++) 比 (头一次看到这种写法)
for (var i:int=0; i<arr.length; i++) 好
if (myObj != null) 比
if (myObj) 快
for ( var i:* in myObj ) 比
for ( var i:String in myObj ) 快;
如果不是为了保存颜色值请不要适用uint这个类型,他的速度比起 int要慢多了;
Array的遍历要比Object或者Dictionary的枚举要快得多。
Dictionary当 weak key设置为 true 的时候要比 false 慢;
var myText:String = “a” + “b” + “c”;
var myText2:String = [ "a", "b", "c" ].join(”");
在JavaScript里面在IE下后者要更快,但是在AS里面,前者更快!
在循环体内声明变量和在循环体外声明变量其实速度上不会有太大的区别。
4、小心Flash的重绘
如果你使用的是Flash Player 的Debugger版本,那么请在检查性能瓶颈的时候不要忘记打开显示重绘区域的功能,这将帮你迅速定位到舞台上有那些地方被重绘了,找出没有显示任何东西却不断重绘的地方,这些地方肯定是有问题的。Flash Player很笨,不会说你把一个DisplayObject的visible设置成false就放弃重绘那个显示对象。所以请保证你的 MovieClip在visible=false的时候为停止状态。有一点很有意思,假设两个现实物体存在 hitTest = true 这样的关系,那么重绘的区域的面积很有可能 > 两者的面积总和!
小心使用useBitmapCache = true
一般情况下除非你确定这个显示对象不可能发生变化那么用用也无妨,不过我更推荐自己手动的用BitmapData将该对象Draw一遍,然后让这个对象彻底消失。否则每次的变动都是巨大的性能消耗。
5. 乘法运算 比 除法 快 “两” 倍:
x=(stage.stageWidth/2);与x=(stage.stageWidth*0.5);的结果是一样的,但是乘法的运算效率要比除法快两倍。
6.避免频繁的创建和删除对象动作:对于要从舞台中删除的对象,如果稍后还会再用到这个对象的话,使用visibility=false将其“删除”,而不是使用removeChild把它从显示列表中删除。因为Flash Player中重建对象要比隐藏对象复杂的多。
7.使用对象池:在游戏初始化时,把所有需要的对象存放到一个数组中。当需要删除和重建对象是,只需要声明一个对象引用数组中的这个对象即可。这比重新new一个对象出来要快多了。
8.位运算有时候会更快:位运算的计算方法和CPU的处理数据本质上是一致的,跟CPU讲它的“母语”,它“理解”起来,做起来自然就更快了!
9.使用Vector类存储一组相同类型的数据:Flash player10引入了Vector类。除了要求存储数据必须是同一种类型外,它的功能和Array类完全一致。但是如果当需要存储不同类型的数据时,Array的运行效率还要比Vector胜出一筹的。
10.用uint代替Math.floor:要对一个小数进行四舍五入,你第一时间可能会想到Math.floor方法,比如 Math.floor(9.3213);而将这个数字强制转换为uint类型,可以得到相同个结果:uint(9.3213);更重要的是Flash Player处理uint的速度要比Math.floor快的多。
11. 使用适当的Display Object
o Shape – 没有交互(占内存少)
o Sprite – 有交互(占内存多)
o MovieClip – 有时间线(占内存更多)
* 尽可能重用对象,而不要重新创建
* 强制类型转换int(exp)要比Math.floor()和Math.ceil()快很多
* 使用对象池技术重用对象
* 释放内存 – 将所有对象的引用设置为null
* 尽可能重用BitmapData
* Callback要比event快而且消耗更少的内存
2. 减少CPU使用率
* 即便将一个Display Object从stage上移除了(removeChild)甚至是已经将它的引用设置为null,它依然有可能在消耗CPU。所以要在其移出 display list时将其完全停下来(比如mc.stop())。
* 卸载从外部装载的内容时,使用loader.unloadAndStop(),而不要使用loader.unload()。
* 尽可能禁用鼠标交互。obj.mouseEnabled = false; obj.mouseChildren = false;
* Timer在某些情况下比ENTER_FRAME要好。
* 减少tweening的使用。
3. ActionScript性能
* 尽可能使用Vector替代Array。固定长度的Vector更快。(Vector可以这样初始化:var coords:Vector.<Number> = Vector.<Number>([132, 20, 46, 254, 244, 100, 20, 98, 218, 254]);)
* 新的drawing API更快,它们是:drawPath, drawGraphicsData, drawTriangles。
* 使用setVector()方法来处理像素。
* 使用setPixel()和setPixel32方法时,要配合使用lock()和unlock()方法。
* 使用TextField时,appendText()方法比+=操作符要快。
* 尽可能在避免在循环内更新TextField。
* 尽可能少使用方括号操作符访问Vector或Array元素,可以利用一个临时变量来操作。
* 尽量将代码内嵌,避免过多的函数调用。(比如用 value > 0 ? value : -value; 来代替Math.abs())
* 代码量过大也会造成性能的降低。尽量少使用大型第三方库(Flex, TLF)。
* 避免在循环内使用evaluating statements(myArray.length)。用临时局部变量来操作。
* 更多优化技巧参考:http://www.rozengain.com/blog/2007/05/01/some-actionscript- 30-optimizations/
4. 渲染性能
* 尽可能避免使用alpha参数。
* 适当的使用cacheAsBitmap可以大幅提高性能。(对于变化少的矢量元件)
* 针对每个子元件使用cacheAsBitmap而不是针对父元件使用。
* 使用TextLine处理静态文本比TextField快而且使用更少的内存。
* 使用cacheAsBitmap和opaqueBackground参数可以改进渲染性能(包含TextField)。
发表评论
-
AS3动态获得类名及类的方法
2012-10-26 17:53 18031.获得某个实例对象的类名:getQualifiedClass ... -
Vector初始化的各种写法
2012-10-16 14:56 4849var i:int = 0; var j:int = ... -
as3中数组array与vector的区别
2012-10-15 14:47 1498ActionScript 3.0 中可用的另一种索引数组 ... -
关于ADDED_TO_STAGE事件
2012-08-13 16:37 816在将显示对象直接添加到舞台显示列表或将包含显示对象的子树 ... -
关于读取舞台大小各浏览器之间的差异
2012-08-13 16:38 795因为在做项目的时候遇到的怪异问题 ie下的player会sta ... -
Flash-如何改变动态文本透明度
2012-08-13 16:39 1720因为Flash的系统字体不直接支持透明,所以我们得通过嵌 ... -
教你如何修改FLASH右键菜单
2012-08-14 15:36 2263有些东西只有用到了才会去看,才会去寻找答案。这真的挺有道 ... -
as跨域问题解决总结
2012-08-14 15:36 1622总结一下在工作中遇 ... -
AS3参数的传址与传值
2012-08-14 15:37 1189//as3里面规定,属于基元数据类型(包括 Boolea ... -
AS3 数组深度复制
2012-08-15 09:55 834//简单复制后,修改副本会修改原对象,深度复制后,修改副 ... -
自定义异常类
2012-08-10 15:19 889package { import flash.err ... -
hasEventListener()与willTrigger()区别
2012-08-10 15:17 1295hasEventListener()方法: 检查 Ev ... -
写AS3需要养成好的编码习惯
2012-08-10 15:14 869因为AS3的垃圾回收是自动的,如果你某个对象存在被引用, ... -
as3对象池应用
2012-08-10 12:06 1234为什么使用对象池? 我们先来看一个例子:假 ... -
AS3 复制可视对象
2012-08-09 16:44 1248复制舞台上的影片剪 反射方法: 需要复制的舞台对象 ... -
AS3动态获得类名及类的方法
2012-08-09 16:21 8161.获得某个实例对象的类名:getQualifiedClass ... -
Flash流式视频提示点及回调函数
2012-08-09 16:21 1488流式传输视频文件 若要流式传输 Flash Media Se ... -
深度探索as3的事件机制
2012-08-08 11:57 1861as3的事件机制很好用 ... -
AS3数组转换XML
2012-08-08 11:08 930package { import flash.displa ... -
FLASH自定义组件
2012-08-08 10:43 2123由于工作需要,最近开始学习FLASH自定义组件的开发。在开发过 ...
相关推荐
除了上述提到的AS3代码优化技巧之外,还可以考虑对AVM2本身进行扩展和改造,以适应特定的需求或提高特定场景下的性能。例如,可以尝试实现新的指令集、改进JIT编译器算法或是增加对某些硬件特性(如SIMD指令集)的...
在探讨“Flash AS3.0代码优化”这一主题时,我们深入分析了如何提升Flash应用程序的性能,确保其运行更加流畅、高效。以下是从给定文件的标题、描述、标签和部分内容中提炼出的关键知识点: ### 1. DisplayObject ...
在优化ActionScript(AS)代码时,无论是AS2还是AS3,提高性能是开发者的关键目标。以下是一些有助于提升代码效率的技巧: 1. **计算代码执行时间**:使用`getTimer()`函数来测量代码块的运行时间,这对分析性能...
flash actionscript3游戏开发之 如何优化as3代码.zip
标签“AS3 JAVA 代码转换”进一步明确了工具的功能,它不仅涉及两种语言的转换,还可能包含特定的优化和适应性处理,以确保转换后的AS3代码能够有效地与Java环境中的AMF服务协同工作。 压缩包内的文件夹名bin、dist...
在压缩包中的"AStart"文件可能是源代码文件,包含了这个优化后的AS3 AStar实现。为了更好地理解和使用这个优化版,你需要对AS3编程和A*算法有一定的了解。通过阅读源代码,你可以看到具体是如何优化的,并可以将其...
ActionScript 3(AS3)是Adobe开发的一种强大的编程语言,主要...此外,了解如何调试和优化代码,以及如何使用AS3的库和框架(如GreenSock Animation Platform或Flash Pro),将有助于进一步提升开发效率和代码质量。
AS3相比之前的版本进行了大量的改进,包括更严格的类型检查、提高了性能和优化了类库,使其更适合开发复杂的互动内容和游戏。 【压缩包子文件的文件名称列表】: 1. **PaddleBall.as**:这是一个AS3源代码文件,...
在本文中,我们将深入探讨如何使用ActionScript 3(AS3)进行编程,特别是通过一个...当你完成这个项目后,可以尝试优化代码,提升性能,或者添加更多特性,如悔棋、保存和加载游戏进度等,以进一步提升你的编程技能。
AS3.0代码截取工具是一款专为ActionScript 3.0编程语言设计的应用程序,它可以帮助开发者方便地从复杂的代码库中提取...对于任何处理AS3.0代码的开发者而言,掌握并利用这样的工具,将能更好地管理和优化他们的代码库。
2. **AS变量的优化**:转换工具还针对AS3中的变量进行了优化处理,可能包括但不限于提升变量的作用域、增加类型注解等,以确保转换后的TS代码更符合类型安全的原则。 **LayaAir、Egret和CocosCreator支持** 这些...
在ActionScript 3 (AS3)中,实现鼠标拖动图片移动的功能是一项基本但重要的技能,尤其对于初学者来说。这个功能广泛应用于各种交互式应用、游戏和网页设计中。以下将详细介绍如何通过AS3来实现这一效果。 首先,...
3. **优化性能**:查看并优化代码,提高在大量数据处理时的性能。 4. **调试问题**:当遇到错误或不兼容性问题时,可以深入源代码找出问题所在并解决。 5. **贡献社区**:如果你发现或修复了bug,可以向开源项目...
- **优化**:考虑到性能,AS3代码可能会包含一些优化策略,如减少不必要的计算、利用缓存、避免内存泄漏等。 以上是对"as3空战游戏代码"可能涉及的技术点的概述。实际代码可能会更复杂,包括自定义组件、游戏AI、...
4. **倒序播放的AS3代码实现** 为了实现倒序播放,我们需要首先停止当前播放,然后从最后一帧开始,逐帧回溯。以下是一个简单的示例代码: ```actionscript var myMovieClip:MovieClip = new Functions(); // ...
使用Flash Professional或Flash Builder等开发工具,结合AS3的调试功能,可以逐步理解代码逻辑并进行代码优化。 总结,"魔力学堂"作为一款使用Flash AS3开发的游戏,其源代码揭示了AS3在游戏开发中的应用深度和广度...
在本场景中,"as3纯代码下雨效果"指的是利用AS3编写程序来模拟逼真的雨滴下落动画。这种效果通常通过在舞台上动态生成和管理大量图形对象来实现,为观众提供一种沉浸式的视觉体验。 1. **基本概念**: - AS3:...
AS3 MP3播放器是一种基于ActionScript 3.0(AS3)开发的音频播放解决方案。ActionScript是Adobe Flash Professional和Flex Builder等工具所使用的编程语言,主要用于创建交互式网页内容,包括游戏、动画和多媒体应用...
8. **优化技巧** - AS3.0代码的性能优化也是一个重要的方面,例如避免不必要的计算,减少内存分配,合理使用缓存等。 以上就是根据标题和文件名推测出的AS3.0类应用的相关知识点,具体实现细节需要查看源代码才能...