如果这个问题之前得到了回答或答案很明显,我很抱歉,但我真的可以帮上忙。
所以我有这个类,我想创建实例。我的想法是为每个实例提供一个独特的位图供以后使用,但我遇到了一些问题。
我的时间轴中的代码如下所示:
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);
如果这没有任何意义,我很抱歉。我很感激任何帮助。
答案 0 :(得分: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);
这样你也可以为所有实例使用相同的bitmapdata保存一些内存(如果你不打算在每个实例中修改它):
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);