Вход

Просмотр полной версии : actionscript2 - создание массива экземпляров класса в классе


kruss555
21.01.2007, 13:41
Помогите разрешить простую на первый взгляд задачку: есть класс А и класс B. Необходимо в классе B бьявить массив экземпляров класса А. Классы находятся в директории lib. Ниже привожу листинги. Укажите мне где я ошибаюсь :(

Класс А:
class lib.A
{
private var myNumber:Number;

public function A( n:Number ){
myNumber = n;
}
public function traceOk():Void{
trace(myNumber);
}
}

Класс B:
import lib.A

class lib.B
{
private var myA = new Array({new A()});

public function B(){
for(var i=0;i<5;i++){
myA.push(i);
myA[i].traceOk();
}
}
}

Вызывающий код:
import lib.A
import lib.B

var b_test:B = new B();

etc
21.01.2007, 13:45
Вне методов класса идёт только объявление переменной и её типа, new Array там никаких быть не должно.

import lib.A;

class lib.B {
private var myA:Array;
public function B() {
this.myA = new Array();
for (var i:Number = 0;i<5;i++) {
var temp:A = new A(i);
temp.traceOk();
this.myA.push(temp);
}
}
}

import lib.B;
var b:B = new B();

kruss555
21.01.2007, 14:05
Спасибо огромное!
Проверил - работает!
И сразу вопрос - это всё хозяйство можно ведь использовать для формирования удобного 2-мерного массива? Типа b[i][j] ?

etc
21.01.2007, 14:10
Можно, только зачем? Для двумерного массива и нужно использовать двумерный массив.

kruss555
21.01.2007, 14:21
Можно, только зачем? Для двумерного массива и нужно использовать двумерный массив.

Вот например один из известных мне методов формирования 2мерного массива:


var L = 3;
var mainArr = new Array(L);
for(var i=0;i<L;i++){
mainArr[i] = new Array(L);
for(j=0;j<L;j++){
mainArr[i][j] = ................;
}
}


Но мне кажется, что это крайне неудобно, ведь я не всегда знаю размерность массива. А с помощью класса это удобно и быстрее, потому что не нужно будет в цикле обьялять переменные?

etc
21.01.2007, 14:26
С помощью класса получится тоже самое, только завуалировано, с кучей ссылок и промежуточных объектов.

kruss555
21.01.2007, 14:30
жаль ... Думал облегчить жизнь.