2012-03-29 13 views
5

Co jeszcze można zrobić, jeśli rozszerzam MainClass z MovieClip zamiast Sprite. Wiem, że MovieClip rozszerza Sprite i ma pod nim Oś czasu. ale wciąż, jak będzie to możliwe do wykorzystania przez MovieClip?MovieClip vs Sprite w 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; 
     }  
    } 

Kolejne małe pytanie, jak używać Osi czasu, jeśli zastąpię Sprite przez MovieClip?

+1

MovieClip rozszerza Sprite. Mówiąc w ten sposób, jedyną rzeczą, z której dostajesz więcej na MovieClip, są właściwości/funkcje ramki. –

Odpowiedz

16

Cytując an AS3 book:

Przed ActionScript 3.0, klasa MovieClip został użyty jako pojemnik graficznej wszystkich celów (podobnie jak używany jest kod ActionScript klasa 3.0s Sprite). Od wersji ActionScript 3.0 program MovieClip służy wyłącznie do kontrolowania instancji symboli klipu filmowego utworzonych w narzędziu do tworzenia treści Flash. Ponieważ ActionScript 3.0 nie zapewnia sposobu tworzenia elementów osi czasu, takich jak ramki i animacje, nie ma potrzeby tworzenia nowych pustych klipów filmowych w środowisku wykonawczym w języku ActionScript 3.0. Zamiast tego, wszystkie programowo utworzone grafiki powinny być instancjami odpowiedniej podstawowej klasy wyświetlania (Bitmapa, Kształt, Sprite, TextField itp.).

MovieClip to klasa dynamiczna zachowująca kompatybilność wsteczną z AS2. Oznacza to, że jeśli nie jest to zalecane, musisz dodać właściwość do MovieClip, możesz po prostu powiedzieć myMC.myCustomProperty = "someValue", podczas gdy z Sprite, który rzuci błąd.

Z tego powodu mówią również, że używanie Sprites jest bardziej efektywne pod względem wydajności. Możesz znaleźć dyskusję na ten temat w this Adobe Forum post.

Powiązane problemy