繁体   English   中英

Flex 3-电影剪辑-在舞台上查看多个帧

[英]Flex 3 - Movie Clips - Viewing multiple frames on the stage

我想在舞台上同时从MovieClip中查看所有帧,但是我正在努力从MovieClip中提取单个帧信息。

我设法将外部SWF加载到MovieClip中,并使用以下代码依次查看帧:

    <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>

在屏幕上查看所有帧的最有效方法是什么?

提前致谢。

最简单的方法是只加载SWF clip.totalFrames次,将每个实例gotoAndStop加载到不同的帧,然后以某种有意义的方式将它们全部添加到舞台上。 通常,您的浏览器会在首次加载后缓存SWF,因此这并不像您想象的那样可怕。

所述替代解决方案是gotoAndStop到每个帧,然后

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

但是这里有很多地方出了问题-您必须在enter_frame循环而不是for循环上执行此操作(否则,您只需要获得第二帧totalFrames次,就必须具有正确的安全设置才能使用draw功能,如果您的剪辑具有奇怪的注册点,则位图将剪辑...

您是同时表示所有帧吗? 喜欢:

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转换

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM