2013-09-27 67 views
0

這是否行得通?AS3類是否可以創建自己的實例

從遊戲開始它會創建一個盒子精靈並觸發一個自定義事件。

如果我使用公共靜態函數和一些事件監聽器,如該準代碼:

public static function tile() 
{ 
if this hears statusbox.statuschanged 

and this triggers a static private function 
} 

static private function 
create instances of tile 
with 
public function tile(id:uint,...) 
+0

你應該嘗試一下,那麼你會發現它是否在工作。 :)通常它應該工作! –

回答

0

沒有理由給定的類不能創建自己的實例。你只需要確保它沒有在它自己的構造函數調用的任何方法中或任何自動實例化的類變量中這樣做。否則,你會創建一個非終止循環!閱讀你的準代碼是相當困難的,但聽起來你不會在實例化時創建任何內部引用,所以你可能會清楚。舉一些例子呢:

將工作:

package { 

    public class Tile { 

     private var _innerTile:Tile; 

     public function Tile() { 

     } 

     public function innerTile_create():Tile { 
      _innerTile = new Tile(); 
      return _innerTile; 
     } 

    } 

} 

將不起作用:

package { 

    public class Tile { 

     public function Tile() { 
      var innerTile:Tile = new Tile(); 
     } 

    } 

} 

也是不行

package { 

    public class Tile { 

     private var _innerTile:Tile = new Tile(); 

     public function Tile() { 

     } 

    } 

} 
+0

我該如何調用啓動遊戲主要部分的tile.as中的公共函數start(),儘管我認爲如果(stage)init(),我可以這樣做。 \t \t \t else addEventListener(Event.ADDED_TO_STAGE,init); \t \t \t \t \t \t} \t私有函數的init():無效 \t { \t removeEventListener(Event.ADDED_TO_STAGE,INIT); - 我不想初始化期間開始呢?簡單的調用start()會導致錯誤。 – user2617804

相關問題