【问题标题】:Children of Children of MovieClip not showing up when MovieClip is added to stage?将 MovieClip 添加到舞台时,MovieClip 的子项的子项不显示?
【发布时间】:2012-06-18 06:29:59
【问题描述】:

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

这是在一个名为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.bitmapxy位置,它可以工作,但我很好奇为什么当只是将位图作为一个孩子添加到块中然后添加它作为一个孩子时它不起作用到stage_foreground

我尝试将this.bitmap 替换为许多其他对象类,例如我创建的临时MovieClipShape,但没有任何显示,所以我知道它与它无关成为Bitmap

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案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.

    【讨论】:

      【解决方案2】:

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

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

      另外,因为所有其他尝试都没有奏效;您是否尝试过使您想要的 var 不添加 public static var?

      【讨论】:

      • 但是 this.block_maker 只是存储了对不同对象的引用,所以 this.block_maker 实际上是对外部对象的引用,因此,如果我理解正确,我不会添加this进入this。如果我错了,请纠正我!
      • 我也不确定,但据我所知,this 总是指this 实例所在的类。同样,我不完全确定,所以也许我应该更新一下我的 AS3 技能:p
      • 嗯,你是对的,但在this.something 中,“某物”或多或少可以是任何东西,包括另一个类的实例,在这种情况下就是这样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-17
      • 2015-09-11
      • 1970-01-01
      • 2015-07-11
      • 2012-08-15
      相关资源
      最近更新 更多