当MovieClip添加到舞台时,MovieClip的孩子的孩子没有出现?

时间:2012-06-16 19:55:10

标签: actionscript-3 flash

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

这是一个名为block的类的类构造函数,block_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替换为许多其他对象类,例如我制作的临时MovieClipShape,但没有任何显示,所以我知道它与Bitmap无关。

2 个答案:

答案 0 :(得分: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”。

The DisplayObject class is the base class for all objects that can be placed on the display list.

答案 1 :(得分:0)

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

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

此外,由于所有其他尝试都不起作用;您是否尝试过要添加public static var?

的var