ActionScript使用小技巧

地球人都知道作为一名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...
}
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;
}

更快。

摘自:http://bbs.9ria.com/viewthread.php?tid=87436

猜你喜欢

转载自liugang-ok.iteye.com/blog/1151418