Дублирование MovieClip в FlashLite и AS2

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

Я работаю во встроенной среде ActionScript2 и FlashLite 3.0 (вне браузера). Приложение, которое я разрабатываю, многократно использует контейнеры мувиклипов, которые содержат внешние изображения, которые загружаются в эти клипы с помощью 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");

person beno    schedule 23.06.2009    source источник


Ответы (1)


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

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

person Branden Hall    schedule 23.06.2009
comment
да, сейчас я застрял с 3.0, но приятно знать, что эти параметры есть в 3.1 - person beno; 24.06.2009
comment
Ага, просто сделай несколько нагрузок. Это не должно быть очень тяжелой операцией, поскольку FL достаточно умен, чтобы не загружать один и тот же файл более одного раза. - person fenomas; 24.06.2009