Flex 3 - Movie Clips - Просмотр нескольких кадров на сцене - PullRequest
0 голосов
/ 24 февраля 2010

Я хочу просматривать все кадры из мувиклипа одновременно на сцене, однако я изо всех сил пытаюсь извлечь информацию о каждом кадре из мувиклипа.

Мне удалось загрузить внешний SWF-файл в мувиклип и последовательно просматривать кадры с помощью следующего кода:

    <mx:HBox id="hbox"></mx:HBox>

<mx:Script>
    <![CDATA[
        import mx.controls.SWFLoader;

        public var loader:SWFLoader = new SWFLoader();
        public var myMovieClip:MovieClip = new MovieClip();

        public function init():void {
            loader.addEventListener(Event.COMPLETE, handleLoaded);
            loader.load('assets/test_document.swf');    
        }

        public function handleLoaded(e:Event):void {
            var myMovieClip:MovieClip = e.currentTarget.content as MovieClip;
            myMovieClip.stop();

            hbox.addChild(loader);
        }
    ]]>
</mx:Script>

Какой самый эффективный способ просмотра ВСЕХ кадров на экране?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2010

Вы имеете в виду ВСЕ кадры одновременно? как:

function getClipAsBitmaps(clip:MovieClip):ArrayCollection{
    var data:ArrayCollection = new ArrayCollection();
    var frames:int = clip.totalFrames;
    for(var i:int = 1 ; i <= frames;  i++){
        clip.gotoAndStop(i);
        trace(i);
        var bitmapData:BitmapData = new BitmapData(clip.width,clip.height,true,0x00FFFFFF);
        bitmapData.draw(clip);
        data.addItem({source:new Bitmap(bitmapData),label:'frame: ' + i});
    }
    return data;
}

tileList.dataProvider = getClipAsBitmaps(star);

Примечание: Преобразования MovieClip игнорируются

0 голосов
/ 24 февраля 2010

Самый простой способ - просто загрузить SWF clip.totalFrames раз, gotoAndStop каждый экземпляр в другой кадр и добавить их все на сцену каким-либо значимым образом. Обычно ваш браузер будет кэшировать SWF после первой загрузки, так что это не так ужасно, как вы думаете.

Альтернативным решением является gotoAndStop для каждого кадра, а затем

var bitmapData:BitmapData = new BitmapData(clip.width, clip.height, true);
bitmapData.draw(clip);

но есть много вещей, которые идут не так, как надо - вы должны делать это в цикле enter_frame вместо цикла for (в противном случае вы просто получите 2-й кадр totalFrames раз, вы должны иметь правильную защиту настройки, чтобы можно было использовать функцию draw, если ваш клип имеет странные точки регистрации, растровые изображения будут обрезаться ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...