2012-03-29 15 views
5

Cosa si può fare di più estendendo MainClass con MovieClip anziché con Sprite. So che MovieClip estende Sprite e ha la Timeline definita sotto. ma comunque come sarà utilizzabile da MovieClip?MovieClip vs Sprite in Actionscript 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; 
     }  
    } 

Un'altra piccola domanda, Come usare la cronologia se sostituisco Sprite di MovieClip?

+1

MovieClip estende Sprite. Quindi, detto questo, l'unica cosa che ottieni di più su MovieClip sono le proprietà/le funzioni del fotogramma. –

risposta

16

Citando an AS3 book:

Prima di ActionScript 3.0, la classe MovieClip è stato utilizzato come un contenitore di grafica per tutti gli usi (molto simile a ActionScript classe 3.0s Sprite è utilizzato). A partire da ActionScript 3.0, MovieClip viene utilizzato solo per controllare le istanze dei simboli Movie Clip creati nello strumento di creazione di Flash. Poiché ActionScript 3.0 non fornisce un modo per creare elementi della timeline quali fotogrammi e interpolazioni, non è necessario creare nuovi Movie Clip vuoti in fase di runtime in ActionScript 3.0. Invece, tutte le immagini create a livello di codice dovrebbero essere istanze della classe di visualizzazione core appropriata (Bitmap, Shape, Sprite, TextField, ecc.).

MovieClip è una classe dinamica che mantiene la retrocompatibilità con AS2. Ciò significa che se, sebbene non raccomandato, ti richiede di aggiungere una proprietà a MovieClip, puoi semplicemente dire myMC.myCustomProperty = "someValue", mentre con uno Sprite, questo genera un errore.

Per questo motivo, dicono anche che l'utilizzo di Sprites è più efficace in termini di prestazioni. È possibile trovare una discussione su questo in this Adobe Forum post.

Problemi correlati