一个Array里边可以放任意的数据类型。可以很杂很杂。可是一个Vector里边只能放同一个类型的数据。并且Vector适用于Flash player 10和之后的版本。目前版本11.5.那么如果存储的数据是同一类型的,用Vector就比较好。因为Vector里边的元素都是同一数据类型,所以ActionScript编译器在代码编译的时候就可以进行类型检查。任意尝试添加或恢复错误类型值的代码都将被处理为编译时错误。数据类型在运行时也会进行检查,因此,假设数据类型不能在编译时被检查出来,它仍然会被检查,而且数据类型许仙志也是有效的。除了类型检查的优点之外,使用Vector类的代码比使用Array创建的同样代码明显要快。
1.创建Vector实例。这个和Array的创建明显不一样。创建Vector实例必须将Vector想要放的数据的数据类型表现出来。eg: var images:Vector.
带上类型就是了。
如果创建明确知道创建的Vector的长度。可以这样写。
var images:Vector.
如果这样,那么Vector的长度就死了。想要可以改变。可以给Vector的fixed属性赋值为true就可以了。
var images:Vector.
var images:Vector.
2.给Vector对象添加数据。
Vector添加数据也像Array一样push或unshift(从尾部加入或从头部加入并将之前的数据移高一个位置),或指定某个键值的位置添加数据。但是有一点,从某个键值位置添加数据的时候,必须在这个键值之前要有数据。这个和Array不同。所以可以这样创建:
var images:Vector.
……
images.[images.length]=”天下第一图.jpg”;
使用push或unshift给Vector添加数据的时候,编译器不检查数据类型是否匹配。因为到代码运行时才会检查。
Vector大家都会用,上边的种种说法来自网络。读一遍,就可以了。有时候,我们存储数据并不是单一的String或Num等数据类型。我们可以创建一个新类来保存数据,然后把他放到Vector中。这个时候,也许会用到排序。sort就可以了。贴上as喵喵。
输出:
你的菜No1
你的菜No3
你的菜No2
你的菜No4
你的菜No1
你的菜No2
你的菜No3
你的菜No4
as_code:
package com.vini123.model { public class ImageModel { private var _index:int; private var _url:String; private var _filename:String; public function ImageModel(xml:XML):void { decode(xml); } /** * 序号 */ public function set index(param:int) { _index = param; } public function get index():int { return _index; } /** * 文件地址 */ public function set url(param:String) { _url = param; } public function get url():String { return _url; } /** * 文件名字 */ public function set filename(param:String) { _filename = param; } public function get filename():String { return _filename; } private function decode(imageNode:XML) { this.index = imageNode. @ index; this.filename = imageNode. @ filename; this.url = imageNode. @ url; } } }
package com.vini123 { import flash.display.Sprite; import com.vini123.model.ImageModel; public class Main extends Sprite { private var myXML:XML= <root> <images> <image index='1' url='1.jpg' filename='你的菜No1'/> <image index='3' url='3.jpg' filename='你的菜No3'/> <image index='2' url='2.jpg' filename='你的菜No2'/> <image index='4' url='4.jpg' filename='你的菜No4'/> </images> </root>; private var images:Vector.<ImageModel>=new Vector.<ImageModel>(); public function Main():void { Init(); } private function Init() { var xml:XMLList = myXML.images.image; for each (var imageNode:XML in xml) { addImages(new ImageModel(imageNode)); } echo(); sortImages(); echo(); } private function sortImages():void { images.sort(sortFunction); } private function sortFunction(x:ImageModel,y:ImageModel):int { return x.index-y.index; } private function addImages(model:ImageModel) { images.push(model); } private function echo() { for each (var imageModel:ImageModel in images) { trace(imageModel.filename); } trace("\n"); } } }