ActionScript代码小技巧[zz]
地球人都知道作为一名Flash开发,ActionScript是我们工作的基本语言,如何利用ActionScript写出高效的代码呢? 今天我整理了一篇简单的只针对代码细节的文章和大家一起分享下自己在这方面的积累。
抛除算法和渲染对应用程序的影响还有什么地方会影响程序的效率呢?——那就是代码的细节,这部分最容易被人忽略却又是最容易学习的内容,有的时候可以让你的程序运行得更加快。
1、关于变量的声明:
//声明对象 var obj:Object = new Object{}; //其实这样速度更快,而且写更少的代码 var obj:Object = {}; //声明数组 var arr:Array = new Array(); //这样更快,而且写更少的代码 var arr:Array = [];
2、关于数组的使用
数组除了最常用的Array.push() 和 Array.pop() 函数外,还有两个也是大家常用到的 Array.shift() 和 Array.unshift(),但是后两者的效率却比前者的效率低了几个数量级!如果不是必要,请不要用 Array.shift() 和 Array.unshift()。
还有一个函数 Array.splice() ,一般被大家用来删除数组中的元素,面对数据庞大的数组,此函数会消耗很多的时间,如果对数组的数据顺序不太敏感的话,建议使用下面的优化函数:
function removeElementOfArray(index:int, array:Array):void { var finalIndex:int = array.length - 1; if (index != finalIndex) { array[index] = array[finalIndex]; } array.pop(); }
获取数组的长度后最好保存下来,下次用不要再去调用 Array.length,因为Array.length的调用也会带来性能损耗的。
3、使用Object还是Dictionary?
很多人都是利用Object或者Dictionary来做哈希表,一般情况下,Dictionary是比Object的访问速度快约15%左右,但是Dictionary在访问不存在的数据的时候,速度要比Object慢10%左右,所以在使用的时候要权衡究竟访问到空数据的比例有多大,进而选择应该使用的对象。
4、关于逻辑判断
很多人喜欢这样写:
foo && bar++;
但是其效率只有下面等价代码的一半
if (foo) { bar++; }
很多人还喜欢:
if (myVar == null) { //code here... }
其实下面的代码要更加少并且更加高效
if (!myVar) { //code here... }
有些人喜欢这样判断String
if (myString != null && myString.length > 0) { //code here... }
而这样写会更加高效
if (myString) { //code here... }
5、关于取整和数据转换
把小数转换成整数,这个是程序开发中经常遇到的。下面的语句从慢到快
Math.round(float); Math.ceil(float); // or Math.floor(float); int(float);
把字符串转换成整数或者小数我们经常用:
parseInt(str, 10); parseFloat(str);
如果都是10进制直接用下面更快:
int(str); Number(str);
6、关于循环
for循环
for (var i:int=0; i<10000000; ++i) { //code here... }
要比 while 循环:
while (i < 10000000) { ++i; }
更快。
转自:TENCENT FLASH TEAM
说点啥吧
页面
腾讯微博
文章标签
营销 倒计时 avatar 三维数字 homestyler 北大关机门 翻墙 Matrix 收录 正则表达式 apple 图片检索 Adobe WP 31号 成人玩具 代理 roxik shoe obj flower puzzle 源码 google java3d 平面设计 人脸识别 Google Map Flash3D 全景 优化 Away3D Alternativa3D Flash网站 Tips最新评论
- Hsinglin 在 发几个今天在校园里拍的全景图 上的评论
- Rming 在 实验室360全景图 上的评论
- 哪种减肥药效果好 在 发几个今天在校园里拍的全景图 上的评论
- jianhualee 在 新作品flash网站-至尊数码-3D图墙 上的评论
- panda 在 away3d中的obj 上的评论




