Дублирование мувиклипа во FlashLite и AS2 - PullRequest
1 голос
/ 24 июня 2009

Надеюсь, кто-нибудь поможет мне здесь.

Я работаю во встроенной среде ActionScript2 и FlashLite 3.0 (за пределами браузера). Разрабатываемое мной приложение многократно использует контейнеры movieclip, которые содержат внешние изображения, которые загружаются в эти мувиклипы с помощью loadMovie. Помещать изображения в библиотеку и использовать attachMovie не вариант, потому что изображения могут быть загружены пользователем и должны загружаться динамически из-за пределов Flash. Среда, в которой я работаю, очень ограничена, и при загрузке этих внешних изображений с помощью loadMovie происходит заметное снижение производительности, когда многие из этих контейнеров мувиклипа появляются на экране одновременно.

Мне бы хотелось иметь способ загрузить внешнее изображение в контейнер для фрагмента ролика один раз, а затем повторно использовать копии этого фрагмента ролика в различных точках приложения, что избавило бы от необходимости постоянно загружать внешние изображения каждый раз .

Сначала я думал, что ответ будет довольно простым, с использованием duplicateMovieClip, но, к сожалению, похоже, что duplicateMovieClip не дублирует ни одно из свойств или дочерних объектов клипа, который дублируется. Из того, что я могу сказать, каждый раз, когда вы дублируете клип, вам нужно снова загружать внешнее изображение, что в первую очередь противоречит цели сделать это.

Я также изучал решения, связанные с AttachBitmap () и кэшированием растровых изображений в целом, но, к сожалению, Adobe не поддерживает Flash Lite 3. (см. «Какие функции Flash 8 не поддерживает Flash Lite 3») поддержка? ") http://www.adobe.com/uk/products/flashlite/faq/.

У кого-нибудь есть опыт решения такой проблемы?

Редактировать: Пример из Adobe прекрасно иллюстрирует ситуацию. Обратите внимание на второй вызов loadMovie после дубликата:

this.createEmptyMovieClip("img_mc", this.getNextHighestDepth());
img_mc.loadMovie("http://www.macromedia.com/images/shared/product_boxes/112x112/box_studio_112x112.jpg");
duplicateMovieClip(img_mc, "newImg_mc", this.getNextHighestDepth());
newImg_mc._x = 200;
newImg_mc.loadMovie("http://www.macromedia.com/images/shared/product_boxes/112x112/box_studio_112x112.jpg");

1 Ответ

2 голосов
/ 24 июня 2009

Ну, и BitmapData.draw, и MovieClip.attachBitmap поддерживаются FlashLite 3.1.

К сожалению, если вы не можете использовать FlashLite 3.1, вам придется выполнить несколько загрузок.

...