|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
не могу клонировать объект 3мя разными способами
Пробую клонировать Sprite/MovieClip 3мя разными способами, ни один не срабатывает. Хотя в трейсе пишут, объект есть - ничего не отображается.
public function clone(object:Object):* { var byteArray:ByteArray = new ByteArray(); byteArray.writeObject(object); byteArray.position = 0; return byteArray.readObject(); } var clone1:Sprite = clone(target); addChildAt(clone1, numChildren); var target:DisplayObject = Symbol1; var targetClass:Class = (target as Object).constructor; var duplicate:DisplayObject = new targetClass(); addChild(duplicate); duplicate.x = 20; duplicate.y = 20; trace("duplicate =",duplicate, duplicate.x, duplicate.y); Symbol1.x = 200; trace(getQualifiedClassName(duplicate)); registerClassAlias("lolo", (targetClass)); var ClassReference:Class = getClassByAlias("lolo"); var activeTab:MovieClip = new ClassReference(); addChild(activeTab); trace("activeTab =", activeTab); Может быть, надо каким-то хитрым образом в классе прописать addChild? Добавлено через 9 минут трейсы 2, 3 кусков кода |
|
|||||
Для того, чтобы создать несколько MovieClip с графикой, нарисованной во Flash CSx, нужно этому MovieClip прописать класс в библиотеке и создавать экземпляры этого класса. Иного способа нет.
__________________
...вселенская грусть |
|
|||||
.
|
Я предполагаю, что графику Shape, Sprite с любым графическим содержимым (authority и runtime) невозможно скопировать вышеназванными способами. Для копирования authority-sprites, не помеченных для экспортирования, подойдет разбор swf-тегов с последующим созданием виртуального SWF-файла и загрузкой через Loader#loadBytes(); Для содержимого, отрисованного в рантайме через super.graphics даже представления не имею.
|
|
|||||
Регистрация: Nov 2010
Сообщений: 497
|
Цитата:
|
|
|||||
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
public function clone(object:Object):* { var byteArray:ByteArray = new ByteArray(); byteArray.writeObject(object); byteArray.position = 0; return byteArray.readObject(); } Решения тогда было отрисовывать все спрайты с помощью graphics и копированием ее же во вновь созданный спрайт с помощью метода Graphics.copyFrom. Если объекты сложные (несколько вложений) ,то проще не заморачиваться с копированием, а создавать новый экземпляр. |
|
|||||
.
|
Цитата:
|
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
Цитата:
Кстати, во флексе есть ObjectUtil - там есть и clone и copy. Нельзя ли как-то это подключить во flash? Добавлено через 2 часа 1 минуту А если регистрировать класс, поможет? Что-то не могу подобрать что вставлять в getClassByAlias, registerClassAlias Последний раз редактировалось Psijic; 12.10.2012 в 13:33. |
|
|||||
Цитата:
Могут быть проблемы с получением ссылки на сам loader, но это немного другая песня.
__________________
...вселенская грусть |
|
|||||
Регистрация: Aug 2012
Сообщений: 108
|
какое-то извращение грузить ресурс по 2 раза. Лучше уж сделать отдачу переменной через return и какой-нибудь геттер или паблик или dispatchEvent
|
Часовой пояс GMT +4, время: 17:43. |
|
« Предыдущая тема | Следующая тема » |
|
|