FlashDevelop中的基本MovieClip用法

时间:2011-04-06 10:50:55

标签: actionscript-3 flash movieclip flashdevelop

我刚开始使用FlashDevelop“动手”学习Actionscript 3。

我现在设法对子画面进行子类化,从库中加载图形,并在舞台上对其进行操作。下一步是使用MovieClip做同样的事情,但它看起来并不那么简单。

基本上,我想要一个简单的MovieClip子类,它使用我创建的SWF&在Flash CS5中导出(其他任何可以创建它们的东西?),然后将它添加到我的FlashDevelop库中。

在我的“主要”课程中,我想要这样的东西:

package 
{
    import flash.display.MovieClip;
    import flash.events.Event;

    public class Main extends Sprite 
    {
        private var myClip:MovieClip;

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);

            myClip = new MyMovieClip();
            addChild(myMovieClip);          
        }
    }
}

所以,对于我的子类,我正在寻找一些东西,比如:

package  
{
    import flash.display.MovieClip;

    [Embed(source = '../lib/MyButton.swf', mimeType = 'application/octet-stream')]
    public class MyMovieClip extends MovieClip
    {
        public function MyMovieClip() 
        {
      // Empty
        }
    }
}

但那没用。然后我试了一下:

package  
{
    import flash.display.MovieClip;

    public class MyMovieClip extends MovieClip
    {
        [Embed(source = '../lib/MyButton.swf', mimeType = 'application/octet-stream')]
        private var MyMovieLivClass:Class;
        private var myClip:MovieClip;

        public function MyMovieClip() 
        {
            myClip = new MyMovieLivClass() as MovieClip;    
            addChild(myClip);           
        }
    }
}

但是那个孩子是空的,我不确定我是不是应该在我的子类MovieClip中创建一个“新的”MovieClip。

我在这里缺少的是什么步骤?

1 个答案:

答案 0 :(得分:2)

在上一个示例中,您正确使用了Embed(您无法在类声明中使用它)。如果myClip为null,则表示强制转换as MovieClip失败,MyButton.swf表示其他类型。如果MyButton.swf只有一个帧,那么它将是Sprite,而不是MovieClip。

编辑:我希望我早些时候注意到这一点。您的剪辑嵌入为ByteArrayAsset,其原始字节为mimeType。从Embed中删除mimeType,编译器将使其成为MovieClipAsset,即MovieClip。