【问题标题】:{AS3} addChild() in a Class does not work类中的 {AS3} addChild() 不起作用
【发布时间】:2012-11-07 22:02:29
【问题描述】:

所以我有课:

package
{
    public final class Main extends Sprite
    {
        private var TextHolder:Sprite = new Sprite();

        public function Main():void
        {
            spawnHolder();
        }
        private function spawnHolder():void
        {
            TextHolder.graphics.beginFill(0xFFFFFF);
            TextHolder.graphics.drawRect(0, 0, 100, 80);
            TextHolder.graphics.endFill();
            stage.addChild(TextHolder);
        }
    }
}

但问题是..我在舞台上看不到任何东西..这个主类是文档类顺便说一句。

如果有人能帮助我,我将不胜感激! 提前致谢。

~Gg

【问题讨论】:

  • 仅仅因为它说[object Sprite] 并不意味着它在显示列表中。这只是意味着它是Sprite 类型的对象。
  • 在 FlashDevelop 中以黑色背景运行您的代码,它运行良好。它可能是您环境中的某些东西。我建议调试并检查它是否真的被添加到舞台并检查颜色。

标签: actionscript-3 flash class private addchild


【解决方案1】:

在将显示对象添加到舞台之前,舞台不可用。在发生这种情况之前它将为空。

package
{
    public final class Main extends Sprite
    {
        private var TextHolder:Sprite = new Sprite();

        public function Main():void
        {
            this.addEventListener(Event.ADDED_TO_STAGE,spawnHolder);
        }
        private function spawnHolder():void
        {
            TextHolder.graphics.beginFill(0xFFFFFF);
            TextHolder.graphics.drawRect(0, 0, 100, 80);
            TextHolder.graphics.endFill();
            stage.addChild(TextHolder);
        }
    }
}

【讨论】:

  • 如果在添加事件监听器之前测试if(stage)会更好,如果评估结果为真则直接调用spawnHolderif(stage) spawnHolder() else this.addEventListener(Event.ADDED_TO_STAGE,spawnHolder);
  • @JcFx 你也忽略了事件监听器没有被删除:)
  • 嘿。书呆子匿名会把我赶出他们的核心圈子...... :)
  • 嘿,“if(stage) init;.....” 是我看到这篇文章时尝试的正确 b4!无论如何,谢谢你们! :D
【解决方案2】:

尝试更改颜色,可能您的文档背景也是白色的。 不要使用TextHolder 之类的大写字母命名变量,而是使用textHolder。 尝试在阶段初始化后完成所有工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多