2010-08-16 54 views
0

的AS2代碼是:如何將AS2調整爲AS3?

MovieClip.prototype.setModel = function(m) 
{ 
    this.model = m; 
    this.drawModel(m); 
} 

MovieClip.prototype.drawModel = drawModel; 

我嘗試:

package 
{ 
    import flash.display.MovieClip; 

    public class Prototype extends MovieClip 
    { 
     public function Prototype() 
     { 
      super(); 
     } 

     public function setModel(m) 
     { 
      this.model = m; 
      this.drawModel(m); 
     } 

     public function setDrawModel(m) 
     { 
      this.drawModel = m; 
     } 

    } 
} 

但沒有 「this.model」 nither 「drawModel(M)」 中的MovieClip。

有什麼想法?

+0

「this.model」和「drawModel(M)」不是影片剪輯的一部分,其他的「至於」文件找他們從您給我們的代碼示例的原始源代碼中獲得。 – 2010-08-16 18:18:31

+0

既然你擴展的MovieClip我想你應該叫'this.prototype.whatever',而不是'this.whatever',這不是驗證,因爲我現在不能運行的例子,但嘗試。 – dierre 2010-08-16 18:39:52

+0

@eiefai只是有一個源文件 – 2010-08-16 20:52:20

回答

0

你必須定義模型和drawModel。我只看到setModel和setDrawModel並沒有變量。

所以,如果您在課堂內部添加以下內容:

private var model:type;

然後你this.model會工作。

+0

但是somexing是錯誤的,因爲這種模式沒有用處。沒有其他代碼部分使用它。但在AS2代碼中,它存在於MovieClip內部,我需要將其設置爲工作。 – 2010-08-16 19:02:42

+0

OK,發現:在這個snipet的模式其實並不需要存在.. – 2010-08-17 13:44:51

0
public class Whatever extends MovieClip 
{ 
    private var _model:DisplayObject; 

    public function set model(m:Object):void 
    { 
     this._model = m; 
     this.drawModel(); 
    } 

    private function drawModel():void 
    { 
     _model.graphics.beginFill(0); //etc... 
    } 
} 

然後在另一個類,你可以做到這一點

var whatever:Whatever = new Whatever(); 
whatever.model = new DisplayObject();