在Flash Player 10之前,对于一个数组内的元素,我们是无法控制其类型的,也无法现在数组的长度,因为它可以自动增长,事实上,自动增长是会损失性能的,因为它需要动态分配内存地址。
FP10中增加了一个新的对象:Vector,它解决了上面的两个问题:
强类型
声明一个Vector对象你必须指定具体的类型:
- var v:Vector.<String>;
var v:Vector.<String>;
这里指定了一个强制的类型:String, 不能加入其他类型的元素到这个Vector中,比如:
- v[0] = 3.14;
v[0] = 3.14;
这是不被允许的。
固定长度
你可以在构造函数中定于这个Vector的长度(也可以不定义)和设置是否为固定长度:
- new Vector.<String>(length, fixed);
new Vector.<String>(length, fixed);
从测试看,Vector比Array在运算上快将近一倍:
- var i : uint;
- var t : uint;
- var length : uint = 1000000;
- //test Vector
- t = getTimer();
- var v:Vector. = new Vector.(length, true);
- for( i = 0; i < length; i )
- {
- v[i] = "1";
- }
- trace(getTimer() - t);
- //test Array
- t = getTimer();
- var a:Array = new Array();
- for( i = 0; i < length; i )
- {
- a[i] = "1";
- }
- trace(getTimer() - t);
var i : uint;
var t : uint;
var length : uint = 1000000;
//test Vector
t = getTimer();
var v:Vector. = new Vector.(length, true);
for( i = 0; i < length; i )
{
v[i] = "1";
}
trace(getTimer() - t);
//test Array
t = getTimer();
var a:Array = new Array();
for( i = 0; i < length; i )
{
a[i] = "1";
}
trace(getTimer() - t);
本文参考文档:Flash_10.0/Vector.html" target=_blank>http://help.adobe.com/en_US/AS3LCR/Flash_10.0/Vector.html
PS.感谢Mark提供 AS3 Syntax Highlighting