Actionscript 3 As3:尝试在非构造函数(BitmapData)上实例化

Actionscript 3 As3:尝试在非构造函数(BitmapData)上实例化,actionscript-3,class,constructor,flash-cs5,instantiation,Actionscript 3,Class,Constructor,Flash Cs5,Instantiation,如果这个问题以前有人回答过,或者答案显而易见,我很抱歉,但我真的需要一些帮助 所以我有一个类,我想创建它的实例。其想法是为每个实例提供一个唯一的位图供以后使用,但我遇到了一些问题 我的时间线中的代码如下所示: var en3:Chime_enemy = new Chime_enemy(); en3.icon_ = thundertest; //an image in my library public class Chime_battler extends MovieClip { pu

如果这个问题以前有人回答过,或者答案显而易见,我很抱歉,但我真的需要一些帮助

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

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

var en3:Chime_enemy = new Chime_enemy();
en3.icon_ = thundertest; //an image in my library
public class Chime_battler extends MovieClip {
    public var icon:Bitmap = new Bitmap;
    public function Chime_battler(iconBmd:BitmapData) {
        icon.bitmapData = iconBmd;
    }
}
public class Chime_battler extends MovieClip {
    public var icon:Bitmap = new Bitmap;
    public function Chime_battler(IconClass:Class) {
        icon.bitmapData = new IconClass;
    }
}
这是我班上的代码。我将发布两个没有预期结果的函数选项:(1)

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

我基本上想使用(2),但在构造函数中的位置是(1)

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


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

我会这样做:

var en3:Chime_enemy = new Chime_enemy();
en3.icon_ = thundertest; //an image in my library
public class Chime_battler extends MovieClip {
    public var icon:Bitmap = new Bitmap;
    public function Chime_battler(iconBmd:BitmapData) {
        icon.bitmapData = iconBmd;
    }
}
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(new thundertest);
addChild(en1.icon);
var en3:Chime_Battler = new Chime_battler(thundertest);
addChild(en1.icon);
通过这种方式,您还可以为所有实例使用相同的位图数据来节省一点内存(如果您不打算在每个实例中修改它):

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

var en3:Chime_enemy = new Chime_enemy();
en3.icon_ = thundertest; //an image in my library
public class Chime_battler extends MovieClip {
    public var icon:Bitmap = new Bitmap;
    public function Chime_battler(iconBmd:BitmapData) {
        icon.bitmapData = iconBmd;
    }
}
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(new thundertest);
addChild(en1.icon);
var en3:Chime_Battler = new Chime_battler(thundertest);
addChild(en1.icon);

我意识到我可以在thundertest中创建一个符号,以便更轻松地操作,但是,由于我没有计划将其用于任何远程需要MovieClip的事情,这似乎是一种浪费。当您正在执行依赖于显示对象的
stage
对象或
parent
的操作时,您只需聆听
Added\u to\u stage
。看起来你也没有在使用它,所以它不会产生任何不同于在Constructor中使用它的结果。里面几乎什么都没有。谢谢你的回复!中间版本工作得很好,但我更愿意使用底部解决方案,尽管我不确定如何使用。当我尝试它的时候,我只是得到了和以前一样的错误。我想尽量避免在类本身之外使用变量,并在构造函数中创建实例;图标后:位图。非常好,非常感谢!