2012-03-29 74 views
5

如果我用MovieClip而不是Sprite扩展MainClass,还能做些什么。我知道MovieClip扩展了Sprite,并在其下面定义了Timeline。但仍然如何它将可用于我的MovieClip?MovieClip与Sprite中的Sprite 3.0

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,如何使用时间轴?

+1

MovieClip扩展了Sprite。因此,据说这是唯一的你在MovieClip上获得更多的是框架属性/功能。 – 2012-03-29 18:17:39

回答

16

an AS3 book引用:

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

MovieClip是一个保留向后兼容AS2的动态类。这意味着,如果在不推荐的情况下需要将属性添加到MovieClip,则可以简单地说myMC.myCustomProperty = "someValue",而对于Sprite,则会引发错误。

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