2

这个问题对我来说似乎很简单,但我一直无法解决它,或者在任何地方找到答案。

这是在类构造函数中调用的类blockblock_maker是调用构造函数的对象,是 的实例level

this.bitmap = new Bitmap(this.bitmap_data);

this.addChild(this.bitmap);     

this.block_maker.stage_foreground.addChild(this);

level,stage_foreground被添加到舞台,但什么也没有出现。trace(stage_foreground.numChildren);显示正确的孩子数量,并且var temp = (this.stage_foreground.getChildAt(0)); trace(temp.numChildren);正确但孩子的孩子实际上并没有出现,舞台只是保持空白。

当我将上面的代码更改为

this.bitmap = new Bitmap(this.bitmap_data);

this.block_maker.stage_foreground.addChild(this.bitmap);

块作为 的子项出现在舞台上level_instance.stage_foreground,但使用此方法时,位图的位置不正确,因为它们没有位置数据。我可以简单地给出this.bitmap xy定位,它可以工作,但我很好奇为什么当只是将位图作为子项添加到块中然后将其作为子项添加到stage_foreground.

我已经尝试用许多其他对象类替换,this.bitmap例如MovieClip我制作的临时对象类或.ShapeBitmap

4

2 回答 2

1

正如你所说

这是在一个类的构造函数中为一个叫做block的类,block_maker是调用构造函数的对象,一个level的实例。

this.bitmap = new Bitmap(this.bitmap_data);
this.addChild(this.bitmap);     
this.block_maker.stage_foreground.addChild(this);

关卡类需要扩展一个显示对象才能显示出来。
换句话说

“这个”

必须是显示对象或以某种形式扩展它。



这不起作用的原因。

this.block_maker.stage_foreground.addChild(this);

这确实

this.block_maker.stage_foreground.addChild(this.bitmap);

是因为“this”不是显示对象,但“this.bitmap”是。

DisplayObject 类是可放置在显示列表中的所有对象的基类。

于 2012-06-17T22:23:32.040 回答
0

首先,即使它不是必需的,我建议让类名以大写字母开头,而 vars 总是以小写字母开头。这是 AS3 中的一个常见“规则”,主要是为了避免混淆。

问题很可能在于您使用this; 你正在做的是添加this this. 在我看来,这不是一种正确的编码方式。

此外,由于所有其他尝试均无效;您是否尝试过制作要添加 var 的public staticvar?

于 2012-06-16T22:01:56.380 回答