2013-03-13 31 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()); 

您可以只使用一个位图和导出相同的方式来使用(没有动画片段包装器),但是这更麻烦一些,因为在创建位图时必须知道位图的高度和宽度。