as3 arraycollection - PullRequest
       0

as3 arraycollection

0 голосов
/ 04 декабря 2010

Я занимаюсь чистым программированием на AS3, и мне нужно работать с чем-то вроде ArrayList, потому что мне нужен массив объектов (который в этом случае не использует класс массива) Однако, похоже, что нет класса ArrayList для импорта (Flex имеет, но ...) Я также нашел проект с открытым исходным кодом под названием as3-collection в Интернете, но какого черта ??? не могу найти ссылку для скачивания ...

Ответы [ 5 ]

9 голосов
/ 04 декабря 2010

Массивы прекрасно работают с объектами, но если вы хотите строгое соблюдение типов данных, попробуйте класс Vector.

1 голос
/ 04 декабря 2010
var yourArray:Array;
var yourObject:Object;

...

yourArray = [];

yourArray.push(yourObject);

Это что-то подобное?Может быть, я не понимаю вопроса ...

1 голос
/ 04 декабря 2010

Если вам действительно нужны методы ArrayList, вы можете попробовать создать собственную реализацию.

ArrayList - это, в основном, набор методов с Array в качестве внутреннего интерфейса, он упрощает взаимодействие с Array, но, похоже, не выполняет то, что вы не смогли бы сделать с Array.

Если вы ищете более легкое манипулирование данными, создайте свой собственный класс с необходимыми методами.

0 голосов
/ 27 октября 2016

Я согласен с @Robusto:

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.as:

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;
        }
    }
}

Теперь вы можете создать вектор с MyClass следующим образом:

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() + ")");
};

Пока класс расширяет класс Object, и вы хотите динамически изменять некоторые свойства, просто объявите ваш класс как динамический.

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]

Во втором случае это:

MyClass[0] = [object MyClass] (instance_of MyClass_0)name = ins_0
MyClass[1] = [object MyClass] (instance_of MyClass_1)name = ins_1
MyClass[2] = [object MyClass] (instance_of MyClass_2)name = ins_2
MyClass[3] = [object MyClass] (instance_of MyClass_3)name = ins_3
MyClass[4] = [object MyClass] (instance_of MyClass_4)name = ins_4
MyClass[5] = [object MyClass] (instance_of MyClass_5)name = ins_5
MyClass[6] = [object MyClass] (instance_of MyClass_6)name = ins_6
MyClass[7] = [object MyClass] (instance_of MyClass_7)name = ins_7
MyClass[8] = [object MyClass] (instance_of MyClass_8)name = ins_8
MyClass[9] = [object MyClass] (instance_of MyClass_9)name = ins_9

Надеюсь, это поможет.

0 голосов
/ 04 декабря 2010

Вы, похоже, ищете ArrayCollection .

Если бы вы сказали мне, что вы хотите сделать с вашим массивом объектов, тогда я мог бы дать вам более краткое направление, каки что делать.Это не должно быть проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...