![]() |
Попытки все-таки скопировать MoveClip с помощью AS3
Как известно, в AS3 использовать DuplicateMovieClip нельзя. Но иногда очень хочется.
Я перерыл массу материала, но ничего работающего я так и не нашел. Метод через конструктор создает пустой клип. Если копировать graphics, то не входят вложенные клипы. А при применении loadBytes от лоадера, код начинает выполняться бесконечно.( Можно попробовать запустить предложенный код (тупо в кадр, в библиотеке любой клип с экспортным именем zzzZ)) Неужели просто тупо растиражировать созданный программно невозможно? Или я что-то упустил? Код AS3:
|
Упустили, можно
Вы, как я понял, в IDE работаете? Если так, то следует просто указать файл, хранящий класс вашего собственного мувика (Картинка - первая по запросу в гугле "Flash IDE custom movieclip class"): http://cdn.psyked.co.uk.s3.amazonaws.../12/image2.jpg Только в данном случае базовым классом будет не mx.flashUIMovieClip, а flash.display.MovieClip (это поле вообще заполняется автоматически) А потом в коде, в любом месте, делайте Код AS3:
И вложенные мувики не забудьте объявить в самом классе |
c 11.6 версии FlashPlayer, копировать MovieClip можно так
|
Первый ответ не подходит. Да, из библиотеки можно добавить любое количество экземпляров, но если необходимо сделать копии именно с генерируемого контента? Как добавить его в библиотеку? Или, например, как добавить в библиотеку файл, загруженный с диска?
По поводу второго совета совсем ничего не понял. Пробую cs6, там максимальная версия FlashPlayer 11.2 . Нашел совет, как добавить новые версии, но playerglobal.swc вроде как версии 4.6 , а она самая новая. И плюс к этому отличный вопрос, а раскадровка со скриптами тоже скопируется, или только графика? Потому что для графики можно б не париться и растеризовать... |
Насколько сильно отличаются сгенерированные объекты от того, что можно описать в классе?
Какая вообще задача решается? Если вы просто привыкли к способу копирования мувиков в AS2 то рано или поздно отвыкать все равно придется. |
Представим гипотетическую ситуацию. На одном мувклипе сидит скрипт, которым пользователь рисует на поверхности (может еще и клип наложить сверху), а затем нам надо все видимое пространство 1000х1000 залить этим, отредактированным мувклипом, 100х100. Это так, разминка для мозга.
На самом деле ситуация такая. Есть огромное поле, которое надо заполнить тайлами (которые могут повторяться), причем тайлы должны грузиться с диска, и могут быть не только битмэповыми, но и swf файлами. Грузить их каждый раз, чтоб вставить нереально, а копировать не выходит. Если есть какая возможность запихнуть их в библиотеку - замечательно. Сделать из них класс - отлично. Вот только класс должен подгружаться динамически и как класс. И я давно перешел уже AS3 концепцию, но вот именно этот момент вообще неудобен. Вообще идеальным был бы вариант var a=b; при этом бэ становится независимым от а, но не ссылкой на него. то есть хотелось бы, например, добавить чайлда b но при этом а остался бы неизмененным, без чайлда. И, может не в тему, еще вопрос, как программно добавить кадр в клип. |
Самый правильный вариант в данном случае - скопировать загруженную SWF в BitmapData, выгрузить swf, и плодить сколько угодно копий Bitmap
|
Можно и вовсе грузить байты SWF-ки URLLoader-ом и потом скармливать эти данные методу loadBytes() каждого нового Loader-а. Это если уж совсем-совсем не хочется делать по-людски.
|
Так, в итоге заработал вариант с лоадером. Вот ведь интересная хрень, все уперлось в многопоточность флэша, точнее в асинхронность. В итоге сначала создается массив лоадеров, потом он грузит картинки. Следующим пунктом коллбэк события комплит, где считается все ли лоадеры закончили. И ТОЛЬКО после этого можно копировать лоадеры, в временные лоадеры для добавления на сцену, причем свойства новых лоадеров применяются только после события комплит, и соответственно доступ к длине, ширине, и прочим вещам ведется через базовый массив. Вот код:
Код AS3:
2)делаем папку с картинками 3) ... 4) PROFIT!!! Всем спасибо. |
| Часовой пояс GMT +4, время: 04:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.