0

如果这个问题之前已经回答过或者答案很明显,我很抱歉,但我真的可以使用一些帮助。

所以我有这个我想创建实例的类。这个想法是给每个实例一个唯一的位图供以后使用,但我遇到了一些问题。

我的时间线中的代码如下所示:

var en3:Chime_enemy = new Chime_enemy();
en3.icon_ = thundertest; //an image in my library

这是我课堂上的代码。我将发布两个没有预期结果的功能选项:(1)

public class Chime_battler extends MovieClip
{
    public var bit:Bitmap;
    public var b:BitmapData;
    public var icon_:Class;

    public function Chime_battler()
    {
        bit = new Bitmap;
        b = new thundertest(30,30); //Should use icon_
        bit.bitmapData = b;
    }
}

然而,这也有效(IIRC),但看到我不得不使用 addChild 这不是一个理想的选择:(2)

public class Chime_battler extends MovieClip
{
    public var bit:Bitmap;
    public var b:BitmapData;
    public var icon_:Class;

    public function Chime_battler()
    {
        this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
    }

    private function onAddedToStage(e:Event):void
    {
        this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);

        bit = new Bitmap;
        b = new icon_;
        bit.bitmapData = b;
    }

我基本上是想用(2),但是放在构造函数中就象(1)那样。

以下是我稍后将如何使用它(在时间轴中):

var img:Bitmap = new Bitmap();
img = en3.bit;
addChild(img);

如果这没有任何意义,我很抱歉。我将不胜感激任何可能的帮助。

4

1 回答 1

0

我会做这样的事情:

public class Chime_battler extends MovieClip {
    public var icon:Bitmap = new Bitmap;
    public function Chime_battler(iconBmd:BitmapData) {
        icon.bitmapData = iconBmd;
    }
}

接着:

var en3:Chime_Battler = new Chime_battler(new thundertest);
addChild(en1.icon);

这样,您还可以为所有实例使用相同的位图数据来节省一些内存(如果您不打算在每个实例中修改它):

var thunderIcon:BitmapData = new thundertest;
...
var en1:Chime_Battler = new Chime_battler(thunderIcon);
var en2:Chime_Battler = new Chime_battler(thunderIcon);
...
addChild(en1.icon);
addChild(en2.icon);

但是,如果您确实需要传递类名并在构造函数中创建实例(这有点难看,但有时需要),您的构造函数将是这样的:

public class Chime_battler extends MovieClip {
    public var icon:Bitmap = new Bitmap;
    public function Chime_battler(IconClass:Class) {
        icon.bitmapData = new IconClass;
    }
}

接着:

var en3:Chime_Battler = new Chime_battler(thundertest);
addChild(en1.icon);
于 2013-05-04T00:14:21.463 回答