20个优化as代码的方法

16 篇文章 0 订阅
12 篇文章 0 订阅

来自:

http://www.experts-exchange.com/Software/Photos_Graphics/Web_Graphics/Macromedia_Flash/A_2107-20-Tips-to-Optimize-your-ActionScript.html


如何计算代码消耗的时间

var start:Number = getTimer();

for(var i:int=0;i<1000;i++){

 // statements to evaluate

}

trace(start-getTimer());



优化20条

 

faster

slower

多个条件比堆叠条件要快

if(var1) if(var2) if(var3)

if(var1 && var2 && var3)

直接写数值比new构造器快

var list:Array = [1,2,3];

var list:Array = new Array(1,2,3);

for循环比while快

for(var i:int=0;i<1000;i++)

var i:int=0;
while(i<1000)

in操作符比hasOwnProperty快

prop in Object

Object.hasOwnProperty("prop")

尽量少用”.”

var var1:Number = container.child.x;
textfield.text = var1;
container.child2.x = var1;

textfield.text = container.child.x;
container.child2.x = container.child.x;

公有对象代替动态类

public class MyObject{
 public var variables:Object = {};
}

public dynamic class MyObject{
}

部署到enterframe上

update()放到enterframe上

update()放到timer上

字符串方法比正则表达式快

var parts:Array = longString.split("|");

var parts:Array = longString.match(/(.*?)\|/gm);

用文本text代替xml

var txt:String=””

var xml=new XML()

尽量处理堆顶数据

MyArray.push(myVar);

MyArray.shift(myVar);

enterframe比timer和intervals都快

addEventListener("enterFrame",myFunc);

myTimer.addEventListener("timer",myFunc);

使用局部变量

function getMinutes(){
 var myVar:uint = 6000;
 return getTimer() / myVar;
}

var myVar:uint = 6000;
function getMinutes(){
 return getTimer() / myVar;
}

常量比变量快

const URL:String = "http://www.experts-exchange.com";

var URL:String = "http://www.experts-exchange.com";

使用as操作符代替强制类型转换

var child:MyClass = event.currentTarget as MyClass;

var child:MyClass = MyClass(event.currentTarget);

E4X真的很慢, 虽然鼓吹节省开发时间

for each(var node:XML in myXML){
 if(node.@myProp == "value"){
   if(node.@anotherProp == 12){
     react();
   }
 }
}

var nodes:XMLList = myXML.(@myProp=="value").(@anotherProp==12);
for each(var node:XML in nodes){
 react();
}

int比number快

for(var i:int=0;i<10000;i++)

for(var i:Number=0;i<10000;i++)

尽可能使用位操作更快

var n:Number = 93745298347.230498;
var m:Number = n|0;

var n:Number = 93745298347.230498;
var m:Number = Math.foor(n);

使用数组连接代替字符串连接

var myArray:Array = [];
for(var i:int=0;i<1000;i++){
 myArray[i] = "text";
};
var myString:String = myArray.join(" ");

var myString:String = "";
for(var i:int=0;i<1000;i++){
 myString += "text ";
};

循环中固定不变的参数尽量不要用变量来使用

var l:uint = myArray.length;
for(var i:int=0;i<l;i++)

for(var i:int=0;i<myArray.length;i++)

尽可能使用静态方法

private static function myFunc():void{};

private function myFunc():void{};




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值