动态地将位图从库加载到movieclip中

时间:2013-03-13 01:17:14

标签: actionscript-3

我有一个名为HomingBullet的MovieClip类,它是一个空的MovieClip(里面没有图形)。我正在尝试这样做,以便当我实例化HomingBullet时,我可以从库中选择一个图形。目前,HomingBullet的构造函数如下所示:

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);

基本上我正在努力使它在实例化时我可以从库中选择一个图形来使用。

2 个答案:

答案 0 :(得分:1)

不确定。最简单的方法是在库中创建一个MovieClip并将位图放在其中。然后打开该movieclip的属性对话框,单击Advanced下拉,然后选中" Export for 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());

你可以只使用一个位图并以相同的方式导出它(没有movieclip包装器),但这有点烦人,因为你必须知道位图的高度和宽度,当你创建它时。

答案 1 :(得分: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将是您想要使用的所需子弹符号的类名。