Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Преобразовать MovieClip в массив Sprite (http://www.flasher.ru/forum/showthread.php?t=140094)

ChuwY 20.05.2010 06:15

Преобразовать MovieClip в массив Sprite
 
Собственно спросить больше нечего.
Есть мувклип, нужно каждый кадр вставить в отдельный спрайт.
Если кто-то смотрит сейчас и знает как -- ответьте пожалуйста.
Очень срочно =х

silin 20.05.2010 10:25

как вариант: сложить в массив экземпляры этого мувика, остановленные на разных кадрах

ChuwY 20.05.2010 19:26

Думал об этом, но, решив, что кадров может быть несколько сотен, не стал пробовать даже.
Хотя... вот сейчас никуда не спешу и попробую.

incvizitor 20.05.2010 19:35

Если такое подойдёт, можно прорисовать каждый кадр в новом Битмап.

Добавлено через 8 минут
А еще можно было бы попробовать:

Код AS3:

import flash.display.MovieClip;
import flash.display.Sprite;
 
var mc:MovieClip = new MyClip();
var sprites:Array = [];
 
for(var i:uint = 0; i < mc.totalFrames; i++) {
        var app_mc:MovieClip = new MyClip();
        var sp:Sprite = new Sprite();
        app_mc.gotoAndStop(i);
        for (var j:uint = 0; j < app_mc.numChildren; j++) {
                sp.addChild(app_mc.getChildAt(j)); // вернёт всех потомков с их состоянием именно в данный момент
        }
        sprites.push(sp);
        app_mc = null;
}


dimarik 20.05.2010 22:10

Пример не будет работать как задумано.

ChuwY 13.07.2010 00:49

Как ни странно пример то работает.
Но на маленьком количестве объектов.
А в реальной программе жутко глючит =(
(разбор страницы переведенной из пдф по флэш)
Есть еще идеи?

BlooDHounD 13.07.2010 01:04

@ChuwY
Вам сказали, что
Цитата:

Сообщение от dimarik
Пример не будет работать как задумано.

что собственно и произошло. можете сделать скриншот каждого кадра.

Сайлас 13.07.2010 01:09

Ну есть медленный, но вроде бы работающий метод
Код не оптимизировал
Код AS3:

var bs:Vector.<BitmapData> = new Vector.<BitmapData>;
                        for (var i:int=1;i<mc.totalFrames;i++) {
                                mc.gotoAndStop(i);
                                var b:BitmapData = new BitmapData(mc.width,mc.height);
                                b.draw(mc);
                                bs.push(b);
                        }

Хотя не знаю будет работать или нет, щас пойду попробую :)
Update: ага, работает

ChuwY 13.07.2010 01:27

В битмапу пробовал уже давно.
Работает все, но к сожалению, жрет мегамного памяти.
Неработоспособно получается все.

Но спасибо за ответ!

gloomyBrain 13.07.2010 01:46

Если мувик целиком векторный, можно использовать Graphics.copyFrom()


Часовой пояс GMT +4, время: 07:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.