2013-03-13 36 views
1

我有一個名爲HomingBullet的MovieClip類,它是一個空的MovieClip(裏面沒有圖形)。我試圖做到這一點,當我實例化一個HomingBullet時,我可以從庫中選擇一個圖形。目前,HomingBullet構造是這樣的:動態加載位圖庫到movieclip

public function HomingBullet(speed:int) 
{ 
    playerX = Main.instance.getPlayerX(); 
    playerY = Main.instance.getPlayerY(); 
    this.speed = speed; 
    addEventListener(Event.ADDED_TO_STAGE, addedToStage); 
} 

這個類的一個典型實例目前看起來是這樣的:

var tempBulletA = new HomingBullet(6); 

基本上我試圖讓實例化時,我可以使它從庫中選擇要使用的圖形。

回答

1

我打算假設你庫中的所有項目符號都是基於MovieClip的。你可以有你的構造函數:

public function HomingBullet(speed:int, bulletClass:Class) 
{ 
    addChild(new bulletClass()); 
    playerX = Main.instance.getPlayerX(); 
    playerY = Main.instance.getPlayerY(); 
    this.speed = speed; 
    addEventListener(Event.ADDED_TO_STAGE, addedToStage); 
} 

創建一個實例:

var tempBulletA = new HomingBullet(6, someBullet); 

someBullet在上面的例子是無論你的類名是您要使用所需的項目符號。

+0

完美。我在擺弄更復雜的路線,我沒有意識到解決方案如此簡單。 – 2013-03-13 01:53:13

1

當然。最簡單的方法是在您的庫中創建一個MovieClip並將位圖放入其中。然後打開該動畫片段的屬性對話框,單擊高級下拉菜單,然後選中「導出爲ActionScript」併爲其指定一個類名稱。對於這個例子,假設我選擇了「Image1」作爲我的課程名稱。

然後在你的代碼,你可以這樣做:

public function HomingBullet(speed:int, image:DisplayObject) 
{ 

    addChild(image); 
    playerX = Main.instance.getPlayerX(); 
    playerY = Main.instance.getPlayerY(); 
    this.speed = speed; 
    addEventListener(Event.ADDED_TO_STAGE, addedToStage); 
} 

而且你會用它實例:

var tempBulletA = new HomingBullet(6, new Image1()); 

您可以只使用一個位圖和導出相同的方式來使用(沒有動畫片段包裝器),但是這更麻煩一些,因爲在創建位圖時必須知道位圖的高度和寬度。