【问题标题】:AS3 Global class that can add objects to stage可以将对象添加到舞台的 AS3 全局类
【发布时间】:2012-02-23 08:46:30
【问题描述】:

所以我最近了解到,通过将一个类导入到我的主类中,我可以从任何其他类访问它的函数。但是....我在导入类中的一个函数需要将显示对象添加到舞台。我很好地访问了静态函数,但它无法将对象添加到舞台。它甚至似乎无法识别 addChild。这是因为它不在显示列表本身中吗?

我在这里缺少什么?各位大佬怎么解决这个问题。我是那么近,却又那么远!

代码是这样的:

package {

import flash.display.Sprite;
import PopHandler;

public class MyMainClass extends Sprite {
    public function MyMainClass():void {
        PopHandler.LaunchPop();
    }
}

}

这是导入的类,不会向舞台添加任何内容。

package {
import flash.display.Sprite;

public class PopHandler extends Sprite {

    public function PopHandler():void {

    }

    public static function LaunchPop() {
        var bp:BreakPop = new BreakPop();
        bp.x = 500;
        bp.y = 347;
        addChild(bp);
    }
}   

}

BreakPop 是我图书馆中的一个项目。

提前致谢。

【问题讨论】:

  • 对于访问“舞台”的类,它必须在舞台上,否则它为空。对于访问“addChild”或任何显示类型函数的类,它必须继承通常通过扩展 sprite 完成的显示对象方法。
  • 我的类确实扩展了精灵并被导入到主类中。导入语句本身还不够吗?这是否意味着它不在舞台上?
  • 如果有帮助,我已经用代码更新了我的问题。

标签: actionscript-3 class global addchild


【解决方案1】:

扩展你的主文档类并在那里添加静态变量,而不是在 init 上添加阶段:

public class Main extends MovieClip {

   public static var stage:Stage;

   public function Main ():void {
     Main.stage = stage;
   }
}

然后在应用程序中的任何地方您都可以访问舞台:

Main.stage.addChild(element)

【讨论】:

  • 这个方法也有效。它也会非常方便。非常感谢。
【解决方案2】:

由于您使用的是静态方法,因此您的 PopHandler 不是精灵的实例,因此无权访问 stage 属性。如果您想将其保留为静态方法,那么您基本上可以跳过extends Sprite而直接使用public class PopHandler {

顺便说一句,这里有一个简单的解决您的问题的方法:为什么不将您想要添加的 DisplayObjectContainer 作为静态方法的参数传递给 BreakPop

例子:

public static function LaunchPop(target:DisplayObjectContainer) {
    var bp:BreakPop = new BreakPop();
    bp.x = 500;
    bp.y = 347;
    target.addChild(bp);
}

然后你这样称呼它(一些例子):

PopHandler.LaunchPop(this); // <-- adding to current object
PopHandler.LaunchPop(root as DisplayObjectContainer); // <-- adding to root
PopHandler.LaunchPop(stage); // <-- adding to stage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2013-03-10
    • 2010-12-26
    • 2016-06-23
    • 2011-01-07
    相关资源
    最近更新 更多