|
|
|||||
Регистрация: Mar 2009
Сообщений: 65
|
Копирование загруженных объектов
Нашел на этом форуме 2 варианта решения проблемы копирования загруженных *.swf-ок:
1. Сохранять byteArray загруженного объекта. Потом загружать содержимое используя этот byteArray. ... var bytes:ByteArray = startloader.contentLoaderInfo.bytes; ... secondLoader.loadBytes(bytes); 2. С помощью конструктора советовал человек: http://www.flasher.ru/forum/showthre...2%FC+%E7%E0%E3 то есть: В этом случае создается объект и даже нужного типа, но этот объект совершенно пустой...такое ощущение что отработал тупо new MovieClip(); Может быть кто-нибудь подскажет другие способы клонирования? Или же я что то сделал не правильно? Приложил мой тестовый пример CS5: |
|
|||||
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
Тут не у всех есть CS5. А создать класс который будет в загружаемом swf это не выход? Создавайте сколько хотите экземпляров нужного вам класса, зачем какие-то копирования.
|
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Не могу что-то придумать, зачем нужно клонировать загруженные swf.
|
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
@mikhailk, например внешнее облачко с анимацией.
@Gogan,
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
ну да, я об этом и говорю.
это уже не первая тема, в которой автор пытается клонировать экземпляры объектов, вместо того, чтобы порождать новые объекты необходимого класса. |
|
|||||
Регистрация: Mar 2009
Сообщений: 65
|
Задача такова: сделать игрушку, в которой будет куча предметов, которые может покупать пользователь и он может покупать предметы одного вида (тут и нужно копирование). А дизайнер создает эти предметы. Таким образом необходимо было максимально облегчить работу для дизайнера. То есть до следующих шагов: 1.нарисовал новый предмет, 2. внес его в базу данных, всё. Конечно можно было создавать в библиотеке объект и по имени генерить сколько угодно копий, но как дальше? Допустим я загрузил новый предмет и у него в библиотеке лежит объект с именем Name1 , главное приложение то должено знать имя этого класса. Можно выкрутится и после загрузки, загружаемой флешкой пробрасывать евент с именем класса, и регистрировать объект в главном приложении, ну а потом делать копии. Но как то на мой взгляд много действий...
Наверно оставлю вариант от Psycho Tiger: Только при создании нового объекта, приложение необходимо будет связывать с одним и тем же классом : |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Все понятно.
Это делается не так. Дизайнеры рисуют айтемы, оформляют их как мувики во внешних библиотеках (fla). При этом они задают для произведенных мувиклипов имена классов в соответствии со спецификацией, которую им выдают. "Item_001","Item_002" и т.д., например. Приложение при загрузке получает данные о всех айтемах (напр, грузит xml-файл) и грузит необходимые библиотеки (в крупных приложениях библиотек много и грузятся они постепенно, по мере необходимости). Для хранения всех загруженных библиотек обычно организуют отдельный класс, который имеет метод, возвращающий класс по строковому параметру (имени класса) или сразу объект. Логика такая: private var library:Object; // Получение библиотеки после загрузки: private function onLoadingComplite(e:Event) : void { var loader:Loader = Loader(e.target.loader); library = loader.contentLoaderInfo.applicationDomain.getDefinition; } // Выдача класса по запросу public function getClassByName(className:String) : Class { return ( library(className) as Class ); } В функции getClassByName еще надо добавить обработку ошибок, но логика такая Последний раз редактировалось mikhailk; 08.01.2011 в 15:25. |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Цитата:
Тогда лучше пишите Object(loader.content).constructor. Так по стандарту =) Не помню чем я руководствовался когда давал тот совет. А вообще конкретно в Вашем случае неплохо было бы плюсануть в карму etc и использовать его функцию getDefinitionNames, полностью автоматизировав процесс на своей стороне.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Регистрация: Oct 2010
Сообщений: 69
|
Возможно я чего то не понимаю... а вот это разве не выход... ( + к верхнему посту )...
|
Часовой пояс GMT +4, время: 02:09. |
|
« Предыдущая тема | Следующая тема » |
|
|