在Flash Player 10之前,對(duì)于一個(gè)數(shù)組內(nèi)的元素,我們是無法控制其類型的,也無法現(xiàn)在數(shù)組的長度,因?yàn)樗梢宰詣?dòng)增長,事實(shí)上,自動(dòng)增長是會(huì)損失性能的,因?yàn)樗枰獎(jiǎng)討B(tài)分配內(nèi)存地址。
FP10中增加了一個(gè)新的對(duì)象:Vector,它解決了上面的兩個(gè)問題:
強(qiáng)類型
聲明一個(gè)Vector對(duì)象你必須指定具體的類型:
- var v:Vector.<String>;
var v:Vector.<String>;
這里指定了一個(gè)強(qiáng)制的類型:String, 不能加入其他類型的元素到這個(gè)Vector中,比如:
- v[0] = 3.14;
v[0] = 3.14;
這是不被允許的。
固定長度
你可以在構(gòu)造函數(shù)中定于這個(gè)Vector的長度(也可以不定義)和設(shè)置是否為固定長度:
- new Vector.<String>(length, fixed);
new Vector.<String>(length, fixed);
從測(cè)試看,Vector比Array在運(yùn)算上快將近一倍:
- 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
。