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:intarray.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;
}

更快。

你还有更多的小技巧? 评论时写下吧。
P.S. 上述的小技巧对可读性会造成影响,所以在使用的时候需要根据具体情况来权衡。


http://flashteam.tencent.com/post/345/actionscript%E4%BB%A3%E7%A0%81%E5%B0%8F%E6%8A%80%E5%B7%A7/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值