Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как сделать копию класса. (http://www.flasher.ru/forum/showthread.php?t=137491)

Anton Bel 15.03.2010 11:22

Как сделать копию класса.
 
Я новичок в АС3, но имею большой опыт в С++. Пишу на Flixel Framework. Короче, вопрос. Имеется класс Stone (для примера) c загруженной картинкой. Надо сделать массив таких Stone. Если делать так как я пока умею, то картинка будет загружатся для каждого элемента массива. Это плохо. Надо сделать так, что бы в массиве были копии экземпляра Stone. Как это сделать ?

AlexDesinger 15.03.2010 12:03

myStone:Stone = new Stone();
а сорри не понял сразу, вот -
http://racer242.blogspot.com/2008/10...bject-as3.html

Котяра 15.03.2010 18:49

по хорошему, надо в Stone сделать метод clone, который будет создавать новый объект класса Stone с нужными свойствами, например

Код AS3:

public function clone():Stone
{
var stone = new Stone(this.param1,this.param2); // тут надо смотреть что делает реально конструктор
stone.id= this.id;
stone.bmpd = this.bmpd.clone() // если нужен клон битмапдаты
// или
stone.bmpd = this.bmpd // если достаточно ссылки.
return stone;
}


dimarik 15.03.2010 22:50

По-хорошему у нас нужно применять GOF-паттерн Prototype. И, как правильно указал камрад Котяра, оформить при нем метод clone(); Кстати, ваш путь - труЪ, поддерживаю.

AlexDesinger 15.03.2010 23:52

не, похорошему - нада написать в Adobe, чтобы они, черт возьми, сделали метод duplicateMovieClip!!!

Котяра 16.03.2010 11:38

а зачем? вот например в классе Stone мне нужно продублировать элемент - создав ему одинаковый id и одинаковую ССЫЛКУ на битмапдату, а не дублировать её полностью. в другом классе мне нужно будет клонировать и битмапу тоже итп..
программист сам должен решать что ему надо при клонировании.


Часовой пояс GMT +4, время: 15:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.