一个Array里边可以放任意的数据类型。可以很杂很杂。可是一个Vector里边只能放同一个类型的数据。并且Vector适用于Flash player 10和之后的版本。目前版本11.5.那么如果存储的数据是同一类型的,用Vector就比较好。因为Vector里边的元素都是同一数据类型,所以ActionScript编译器在代码编译的时候就可以进行类型检查。任意尝试添加或恢复错误类型值的代码都将被处理为编译时错误。数据类型在运行时也会进行检查,因此,假设数据类型不能在编译时被检查出来,它仍然会被检查,而且数据类型许仙志也是有效的。除了类型检查的优点之外,使用Vector类的代码比使用Array创建的同样代码明显要快。

1.创建Vector实例。这个和Array的创建明显不一样。创建Vector实例必须将Vector想要放的数据的数据类型表现出来。eg: var images:Vector.=new Vector.();
带上类型就是了。
如果创建明确知道创建的Vector的长度。可以这样写。
var images:Vector.=new Vector.(5);听说这样效率更高一点。
如果这样,那么Vector的长度就死了。想要可以改变。可以给Vector的fixed属性赋值为true就可以了。
var images:Vector.=new Vector.(5,true);或
var images:Vector.=new Vector.(5); images.fixed=true;
2.给Vector对象添加数据。
Vector添加数据也像Array一样push或unshift(从尾部加入或从头部加入并将之前的数据移高一个位置),或指定某个键值的位置添加数据。但是有一点,从某个键值位置添加数据的时候,必须在这个键值之前要有数据。这个和Array不同。所以可以这样创建:
var images:Vector.=new 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");
        }
    }

}