2012-06-16 35 views
2

这个问题对我来说似乎很简单,但我一直无法修复它,或者在任何地方找到答案。将MovieClip添加到舞台时,MovieClip的儿童的孩子没有显示出来吗?

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

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

this.addChild(this.bitmap);  

this.block_maker.stage_foreground.addChild(this); 

levelstage_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.bitmapxy的位置,它的工作原理,但我很好奇,为什么它只是将位图添加到该块,然后将其作为子项添加到stage_foreground时不起作用。

我已经尝试了一些其他对象类,来替换this.bitmap如临时MovieClip我做了,或Shape,但没有显示出来,所以我知道它有什么用它做是一个Bitmap

回答

1

正如你所说

这是在类的构造函数的一类叫做块,block_maker 就是所谓的构造,水平的一个实例的对象。

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.bitmap” 是。

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

0

首先,即使没有必要,我建议以大写字母开头,并且变量总是以小写字母开头。这是AS3常见的“规则”,主要是为了避免混淆。

这个问题很可能在于你使用this;你在做什么是将this纳入this。在我看来,这不是一种正确的编码方式。

另外,因为所有其他尝试都不起作用;你有没有试图让你想要添加一个public static变种?

+0

但this.block_maker是简单地存储到不同的对象的引用,所以this.block_maker实际上是到外部对象的引用,并且因此,如果正确地明白,我不添加'this'进入'这个'。如果我错了,请纠正我的错误! – BumbleShrimp

+1

我也不确定,但就我的知识而言,'this'总是指写入'this'实例的类。同样,我也不完全确定,所以也许我应该刷新自己的AS3技能有点:p – poepje

+0

那么你是对的,但在'this.something'中,“something”可以是或多或少的东西,包括另一个类的实例,在这种情况下就是这样。 – BumbleShrimp

相关问题