这个问题对我来说似乎很简单,但我无法修复它,或者在任何地方找到答案。
这是一个名为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
x
和y
位置,但它确实有效,但我很好奇为什么在将位图作为子项添加到块中时它不起作用然后将其作为孩子添加到stage_foreground
。
我尝试将this.bitmap
替换为许多其他对象类,例如我制作的临时MovieClip
或Shape
,但没有任何显示,所以我知道它与Bitmap
无关。
答案 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?