2010-11-01 05:00

[ActionScript] 幾種物件撰寫方式

一般撰寫的方式:雖然沒有建構物件,但別忘了場景本身就是一個物件,所以下面的撰寫方式已經再使用物件了。
  1. var dataStr="jax"; 
  2. var loadMc:MovieClip = createEmptyMovieClip("container", this.getNextHighestDepth()); 
  3. loadMc._x = loadMc._y = 0; 
  4. loadMc.visible = false; 
  5.  
  6. var mcLoader:MovieClipLoader = new MovieClipLoader(); 
  7. mcLoader.addListener(this); 
  8. mcLoader.loadClip("vodBlock.swf",loadMc); 
  9.  
  10. function onLoadInit(loadMc:MovieClip) { 
  11.    loadMc._visible = false; 
  12.    loadMc.text=this.dataStr; 
  13. }     


使用 JSON 的撰寫方式:如果只是單純的建立一個物件,下面這個寫法應該是最簡潔的,但這並不是一個很好 ActionScript 風格。
  1. var myObject = { 
  2.    dataStr:"jax", 
  3.    loadMc:null, 
  4.    init:function(){ 
  5.        this.loadMc= createEmptyMovieClip("container", this.getNextHighestDepth()); 
  6.        this.loadMc._x = this.loadMc._y = 0; 
  7.        this.loadMc.visible = false; 
  8.  
  9.        var mcLoader:MovieClipLoader = new MovieClipLoader(); 
  10.        mcLoader.addListener(this); 
  11.        mcLoader.loadClip("vodBlock.swf",this.loadMc); 
  12.    }, 
  13.    onLoadInit:function(loadMc:MovieClip) { 
  14.        loadMc._visible = false; 
  15.        loadMc.text=this.dataStr; 
  16.    } 
  17. }     
  18.  
  19. myObject.init();     


利用 Class 撰寫方式:這是 ActionScript 標準風格的撰寫方式,也比較正規一點。
  1. class MyClass{ 
  2.    var dataStr:String; 
  3.    var loadMc:MovieClip; 
  4.  
  5.    function MyClass(){ 
  6.        this.dataStr="jax" 
  7.        this.loadMc= createEmptyMovieClip("container", this.getNextHighestDepth()); 
  8.        this.loadMc._x = container._y = 0; 
  9.        this.loadMc.visible = false; 
  10.  
  11.        var mcLoader:MovieClipLoader = new MovieClipLoader(); 
  12.        mcLoader.addListener(this); 
  13.        mcLoader.loadClip("vodBlock.swf",this.loadMc);         
  14.    } 
  15.  
  16.    function onLoadInit(loadMc:MovieClip) { 
  17.        loadMc._visible = false; 
  18.        loadMc.text=this.dataStr; 
  19.    } 
  20. }     
  21. new MyClass();     


延伸原生 Class 的撰寫方式:如果規劃的好這會是一個很省事的撰寫方式。
  1. class MyMovieClip extends MovieClip{ 
  2.    var dataStr:String; 
  3.  
  4.    function MyMovieClip(){ 
  5.        this.dataStr="jax" 
  6.        this._x = this._y = 0; 
  7.        this.visible = false; 
  8.    } 
  9.  
  10.    function loadMovieClip(src:String) :MovieClip { 
  11.        var mcLoader:MovieClipLoader = new MovieClipLoader(); 
  12.        mcLoader.addListener(this); 
  13.        mcLoader.loadClip(src,this);         
  14.        return this; 
  15.    } 
  16.  
  17.    function onLoadInit(mc:MovieClip) { 
  18.        this = MyMovieClip(loadMc); 
  19.        this._visible = false; 
  20.        this.text=this.dataStr; 
  21.    } 
  22. }     
  23.  
  24. var loadMc:MyMovieClip = MyMovieClip( createEmptyMovieClip("container", this.getNextHighestDepth()) ); 
  25. loadMc.loadMovieClip("vodBlock.swf"); 


物件的撰寫有幾個要點:
  1. 搞清楚 this 到底是誰?這大概也是入門時最容易被弄到翻過來的問題之一
  2. 物件的規劃,別寫了半天的『物件導向』跟寫『結構語言』沒什麼分別。

0 回應: