as3 arraycollection

时间:2010-12-04 11:59:57

标签: actionscript-3

我正在做一个纯粹的AS3编程,我迫切需要使用类似ArrayList的东西,因为我需要一个对象数组(在这种情况下,数组类没用)。 但是我似乎没有可以导入的ArrayList类(Flex有但是......) 我还在互联网上找到了一个名为as3-collection的开源项目,但到底是什么?无法找到任何下载链接...

5 个答案:

答案 0 :(得分:9)

Arrays对于对象工作得很好,但如果要严格执行数据类型,请尝试Vector类。

答案 1 :(得分:1)

var yourArray:Array;
var yourObject:Object;

...

yourArray = [];

yourArray.push(yourObject);

是这样的吗?也许我不明白这个问题......

答案 2 :(得分:1)

如果你真的需要ArrayList的方法,你可以创建自己的实现。

ArrayList主要是一堆以Array作为后端的方法,它简化了与Array的交互,但似乎没有做到你无法用数组做的事情。

如果您正在寻找更容易的数据操作,请使用必要的方法创建自己的类。

答案 3 :(得分:0)

您似乎在寻找ArrayCollection

如果你告诉我你想要对你的一系列物体做什么,那么我可以给你一个更简洁的方向来指导你做什么。这应该不是问题。

答案 4 :(得分:0)

我同意@Robusto:

QueryProvider

尝试更具体,如果您使用您选择的课程......

例如MyClass.as:

var ObjectsLenght:uint=10;
var vectorOfObjects:Vector.<Object> = new Vector.<Object>();
for (var i:uint=0 ;i<ObjectsLenght;i++){
    var o:Object = new Object();
    vectorOfObjects.push(o);
};
for (var j:uint=0 ;j<ObjectsLenght;j++){
    trace("Object["+j+"] = " + vectorOfObjects[j]);
};

您现在可以使用MyClass创建Vector:

package  {
    public class MyClass {
        var id:String;
        public function MyClass(id:uint) {
            this.id = "instance_of MyClass_" + id.toString()
        }
        public function getID():String{
            return this.id;
        }
    }
}

只要Class扩展了Object类,并且您想要动态地更改某些属性,只需将您的类声明为动态,就像这样。

import MyClass;
var instancesLenght:uint=10;
var vectorOfMyClass:Vector.<MyClass> = new Vector.<MyClass>();
for (var n:uint=0 ;n<instancesLenght;n++){
    var instance:MyClass = new MyClass(n);
    vectorOfMyClass.push(instance);
};
for (var m:uint=0 ;m<ObjectsLenght;m++){
    trace("MyClass["+m+"] = " + vectorOfMyClass[m] + " (" + vectorOfMyClass[m].getID() + ")");
};

然后你可以这样做:

package  {
    public dynamic class MyClass {
        var id:String;
        public function MyClass(id:uint) {
            this.id = "instance_of MyClass_" + id.toString()
        }
        public function getID():String{
            return this.id;
        }
    }
}

在第一种情况下,您将获得此输出:

import MyClass;
var instancesLenght:uint=10;
var vectorOfMyClass:Vector.<MyClass> = new Vector.<MyClass>();
for (var n:uint=0 ;n<instancesLenght;n++){
    var instance:MyClass = new MyClass(n);
    instance.nameOfInstance = "ins_" + n.toString();
    vectorOfMyClass.push(instance);
};
for (var m:uint=0 ;m<ObjectsLenght;m++){
    trace("MyClass["+m+"] = " + vectorOfMyClass[m] + " (" + vectorOfMyClass[m].getID() + ")" + "name = " + vectorOfMyClass[m].nameOfInstance);
};

在第二种情况下,这一次:

Object[0] = [object Object]
Object[1] = [object Object]
Object[2] = [object Object]
Object[3] = [object Object]
Object[4] = [object Object]
Object[5] = [object Object]
Object[6] = [object Object]
Object[7] = [object Object]
Object[8] = [object Object]
Object[9] = [object Object]

我希望这会有所帮助。