在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