找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1354|回复: 1

falsh as3开发的使用技巧

[复制链接]

18

主题

134

回帖

142

牛毛

一级牛人

积分
142
发表于 2012-9-28 13:47:59 | 显示全部楼层 |阅读模式 来自 北京市
1:String转换成Boolean
1 var s:String="true";
2 var b:Boolean = (s=="true");
2:清除所有子对象
1  while(container.numChildren > 0)
2  {
3      container.removeChildAt(0);
4  }
3:对于不需要 鼠标交互的对象 设置属性 mouseChildren , mouseEnabled。
4: 尽可能使用 Vector 类而不是 Array 类,Vector 类的读写访问速度比 Array 类快。
5:通过为矢量分配特定长度并将其长度设为固定值,可进一步优化。

1     // Specify a fixed length and initialize its length2     var coordinates:Vector.<Number> = new Vector.<Number>(30***00, true);
3     var started:Number = getTimer();
4     for (var i:int = 0; i< 30***00; i++)
5     {
6     coordinates[i] = Math.random()*1024;
7     }
8     trace(getTimer() - started);
9     // output: 48
6:将重用的值存储在常量,可对上面实例进一步优化。

1     // Store the reused value to maintain code easily 2     const MAX_NUM:int = 30***00;
3     var coordinates:Vector.<Number> = new Vector.<Number>(MAX_NUM, true);
4     var started:Number = getTimer();
5     for (var i:int = 0; i< MAX_NUM; i++)
6     {
7     coordinates[i] = Math.random()*1024;
8     }
9     trace(getTimer() - started);
10     // output: 47
7:使用BitmapData的 lock() 和 unlock() 方法加快运行速度。
8:对于 TextField 对象,请使用 appendText() 方法,而不要使用 += 运算符。
9: 使用中括号运算符可能会降低性能。将您的引用存储在本地变量中可避免使用该运算符。以下代码示例演示了使用中括号运算
符的效率很低:

1 var lng:int = 5000;
2 var arraySprite:Vector.<Sprite> = new Vector.<Sprite>(lng, true);
3 var i:int;
4 for ( i = 0; i< lng; i++ )
5 {
6 arraySprite[i] = new Sprite();
7 }
8 var started:Number = getTimer();
9 for ( i = 0; i< lng; i++ )
10 {
11 arraySprite[i].x = Math.random()*stage.stageWidth;
12 arraySprite[i].y = Math.random()*stage.stageHeight;
13 arraySprite[i].alpha = Math.random();
14 arraySprite[i].rotation = Math.random()*360;
15 }
16 trace( getTimer() - started );
17 // output : 16
以下优化的版本减少了对中括号运算符的使用:

1 var lng:int = 5000;
2 var arraySprite:Vector.<Sprite> = new Vector.<Sprite>(lng, true);
3 var i:int;
4 for ( i = 0; i< lng; i++ )
5 {
6 arraySprite[i] = new Sprite();
7 }
8 var started:Number = getTimer();
9 var currentSprite:Sprite;
10 for ( i = 0; i< lng; i++ )
11 {
12 currentSprite = arraySprite[i];
13 currentSprite.x = Math.random()*stage.stageWidth;
14 currentSprite.y = Math.random()*stage.stageHeight;
15 currentSprite.alpha = Math.random();
16 currentSprite.rotation = Math.random()*360;
17 }
18 trace( getTimer() - started );
19 // output : 9
10: 尽可能使用内联代码以减少代码中函数的调用次数。例如:
1 currentValue > 0 ? currentValue : -currentValue;

比下面这种快

1 Math.abs ( currentValue );   
11:避免计算循环中的语句。
不计算循环中的语句也可实现优化。以下代码遍历数组,但未进行优化,因为在每次遍历时都需要计算数组长度:

1 for (var i:int = 0; i< myArray.length; i++)
2 {
3 }
最好存储该值并重复使用:
1 var lng:int = myArray.length;
2 for (var i:int = 0; i< lng; i++)
3 {
4 }
12:对 while 循环使用相反的顺序。

以相反顺序进行 while 循环的速度比正向循环快:

1 var i:int = myArray.length;
2 while (--i > -1)
3 {
4 }
13:通常,使用尽可能低的帧速率可以提高性能。
已绑定手机

193

主题

30

回帖

536

牛毛

一级牛人

积分
536
QQ
发表于 2012-10-5 17:00:49 | 显示全部楼层 来自 上海市
国际偶尔几个类似点击工具
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-6 00:55 , Processed in 0.753524 second(s), 41 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表