Actionscript 3.0 中的 MovieClip 与 Sprite

Posted

技术标签:

【中文标题】Actionscript 3.0 中的 MovieClip 与 Sprite【英文标题】:MovieClip vs Sprite in Actionscript 3.0 【发布时间】:2012-04-12 20:53:37 【问题描述】:

如果我用 MovieClip 而不是 Sprite 扩展 MainClass,还能做些什么。我知道 MovieClip 扩展了 Sprite,并且在它下面定义了 Timeline。但是我仍然可以通过 MovieClip 使用它吗?

package  
    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.display.MovieClip;
    import flash.text.TextFieldType;

    public class MainClass extends Sprite      
        public function MainClass()    

            var m:Module=new Module("Admin","John");

            var tf:TextField=new TextField();
            tf.text=m.info;
            tf.border=true;
            tf.type=TextFieldType.INPUT;

            var myFormat:TextFormat = new TextFormat();
            myFormat.size = 3;
            tf.defaultTextFormat=myFormat;

            addChild(tf);   
            this.width=500;
            this.height=300;
            this.x=0;
            this.y=10;
        
           



class Module
        private var m_mName:String;
        private var m_owner:String;

        public function Module(mName:String,owner:String):void
            m_mName=mName;
            m_owner=owner;
        
        public function get info():String
            return owner+' is owner of '+mName;
        
        public function get mName():String
            return m_mName;
        
        public function get owner():String
            return m_owner;
               
    

另一个小问题,如果我用 MovieClip 替换 Sprite,如何使用 Timeline?

【问题讨论】:

MovieClip 扩展了 Sprite。话虽如此,您在 MovieClip 上获得的更多信息就是帧属性/功能。 【参考方案1】:

引用an AS3 book:

在 ActionScript 3.0 之前,MovieClip 类被用作通用图形容器(很像 ActionScript 3.0 使用的 Sprite 类)。从 ActionScript 3.0 开始,MovieClip 仅用于控制在 Flash 创作工具中创建的影片剪辑元件的实例。由于 ActionScript 3.0 不提供创建时间轴元素(例如帧和补间)的方法,因此在 ActionScript 3.0 中无需在运行时创建新的空影片剪辑。相反,所有以编程方式创建的图形都应该是适当的核心显示类(Bitmap、Shape、Sprite、TextField 等)的实例。

MovieClip 是一个动态类,它保留了与 AS2 的向后兼容性。这意味着,虽然不推荐,但如果要求您向 MovieClip 添加属性,您可以简单地说 myMC.myCustomProperty = "someValue",而使用 Sprite,则会引发错误。

出于这个原因,他们还说使用 Sprite 在性能方面更有效。您可以在 this Adobe Forum post 找到有关此的讨论。

【讨论】:

以上是关于Actionscript 3.0 中的 MovieClip 与 Sprite的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Actionscript 3.0 中的数组 B 中的数组 A 中删除元素?

如何在 Actionscript 3.0 中获取数组的所有排列?

未找到 Animate Actionscript 3.0 场景,但存在场景

在Adobe Animate ActionScript 3.0中循环

如何在 Flash 中使用 Actionscript 3.0 制作动态视频播放器

如何在Actionscript 3.0中获取数组的所有排列?