2012-03-29 32 views
5

Điều gì có thể thực hiện được nếu tôi mở rộng MainClass bằng MovieClip thay vì Sprite. Tôi biết rằng MovieClip mở rộng Sprite và nó có Timeline được định nghĩa bên dưới nó. nhưng liệu MovieClip có thể sử dụng được không?MovieClip vs Sprite trong 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; 
     }  
    } 

Một câu hỏi nhỏ khác, Cách sử dụng Dòng thời gian nếu tôi thay thế Sprite bằng MovieClip?

+1

MovieClip mở rộng Sprite. Vì vậy, với điều đó đang được nói rằng điều duy nhất bạn đang nhận được nhiều hơn trên MovieClip là các thuộc tính khung/chức năng. –

Trả lời

16

Trích dẫn từ an AS3 book:

Trước ActionScript 3.0, lớp MovieClip được sử dụng như một thùng chứa đồ họa tất cả các mục đích (giống như ActionScript lớp 3.0s Sprite được sử dụng). Kể từ ActionScript 3.0, MovieClip chỉ được sử dụng để kiểm soát các cá thể của các ký hiệu movieclip được tạo trong công cụ biên tập Flash. Bởi vì ActionScript 3.0 không cung cấp một cách để tạo các phần tử dòng thời gian như khung và tweens, không cần phải tạo các tệp movieclips trống mới khi chạy trong ActionScript 3.0. Thay vào đó, tất cả các đồ họa được lập trình tạo nên là các thể hiện của lớp hiển thị lõi thích hợp (Bitmap, Shape, Sprite, TextField, vv).

MovieClip là lớp động duy trì khả năng tương thích ngược với AS2. Điều đó có nghĩa rằng nếu, trong khi không được khuyến nghị, yêu cầu bạn thêm thuộc tính vào MovieClip, bạn có thể chỉ cần nói myMC.myCustomProperty = "someValue", trong khi với Sprite, điều đó sẽ gây ra lỗi.

Vì lý do này, họ cũng nói rằng việc sử dụng Sprites hiệu quả hơn về hiệu suất. Bạn có thể tìm thấy một cuộc thảo luận về điều này trong this Adobe Forum post.

Các vấn đề liên quan