PDA

Просмотр полной версии : ООП в As


Fireworm
10.07.2003, 21:16
Хочу сделать следующее: описать свой класс, со своими членами и функциями, а затем создать массив объектов этого класса. Что-то вроде этого
ar = new Array();
for (i=0; i< n; i++){
ar[i] = new MyClass();
}

Позволяет ли объектная модель AS делать подобные вещи, и если да, то как?

Спасибо.

iLoveYou
10.07.2003, 23:26
а почему бы и нет?
как сделать? вот как ты сам написал - так и сделать :) в чем сложности-то?

C2Plus
11.07.2003, 02:37
function MyClass(){
this.myProp = 1;
this.myMethod = function (){
}
}


базовое описание класса.

более рациональное создание методов:

function MyClass(){
this.myProp = 1;
}

MyClass.prototype.myMethod = function(){
}

iLoveYou
11.07.2003, 11:44
Оригинал написал(а) C2Plus

более рациональное создание методов:
MyClass.prototype.myMethod = function(){
}
:) Колин Мук в своей последней книженции этот "способ" вообще называет единственно верным, а все остальные возможные - обусловленными несовершенством AS.

2Fireworm для работы с массивом, например:
function MyClass(a) {
this.a = a;
this.b = "asd";
}
MyClass.prototype.getA = function() {
_root.a = this.a;
};
//*****************************
var i;
ar = new Array();
for (i=0; i<5; i++) {
ar[i] = new MyClass(i);
}
ar[3].getA();
trace(a);
trace(ar[3].b);
:)

Fireworm
11.07.2003, 11:54
Тогда, расскажите пожалуйста (прочитать негде, ибо книжек нет, а в хелпе это как-то туманно описанно), для чего при определении метода использовать prototype, и почему не лучше вместо
MyClass.prototype.getA = function() {
_root.a = this.a;
};
написать
MyClass.prototype.getA = function() {
return this.a;
};
А затем использовать
mm = new MyClass('ss');
trace(mm.getA)

?

И еще вопрос, получается что класс описывается, при описании конструктора? Т.е. не надо как-то описывать сам тип MyClass?

iLoveYou
11.07.2003, 12:09
Оригинал написал(а) Fireworm
почему не лучше вместо
MyClass.prototype.getA = function() {
_root.a = this.a;
};
написать
MyClass.prototype.getA = function() {
return this.a;
};


да неее, дружище. я это для примера только написал. просто недавно на форуме про подобную фигню спрашивали - вот в мозгу и отпечаталось. :) просто пример метода - не бери в голову :)

iLoveYou
11.07.2003, 12:27
на русском:
http://projects2003.by.ru/web2/action/ch12_05.htm
http://www.vmstudio.com/arch/oopF5_ru.zip (http://www.vmstudio.com/arch/oopF5_ru.zip)
на английском:
http://www.macromedia.com/devnet/mx/flash/articles/actionscript2/asdg2_ch12.pdf (http://www.macromedia.com/devnet/mx/flash/articles/actionscript2/asdg2_ch12.pdf)
на флашере:
http://www.flasher.ru/forum/showthread.php?threadid=41547&highlight=prototype (http://www.flasher.ru/forum/showthread.php?threadid=41547&highlight=prototype)
http://www.flasher.ru/forum/showthread.php?threadid=36697&highlight=prototype (http://www.flasher.ru/forum/showthread.php?threadid=36697&highlight=prototype)

Fireworm
11.07.2003, 12:30
Огромное спасибо!!! То, что нужно!!!

iLoveYou
11.07.2003, 12:37
успехов :)