Actionscript 3 静态主类-AS3

Actionscript 3 静态主类-AS3,actionscript-3,flash,main,Actionscript 3,Flash,Main,有没有一种方法可以使main类成为基于main.fla-static的类?所以我们可以像在java中一样使用它,能够从其他类引用它,因为我必须将main本身的实例作为参数传递给一个类,否则我会失去引用。 我试图添加静态前缀,但似乎as3不允许添加。as3中没有静态类的概念 您可以使用singleton模式公开主类的唯一实例: public class Main extends Sprite { public static var instance:Main; public f

有没有一种方法可以使main类成为基于main.fla-static的类?所以我们可以像在java中一样使用它,能够从其他类引用它,因为我必须将main本身的实例作为参数传递给一个类,否则我会失去引用。
我试图添加静态前缀,但似乎as3不允许添加。

as3中没有静态类的概念

您可以使用singleton模式公开主类的唯一实例:

public class Main extends Sprite {

    public static var instance:Main;

    public function Main() {
         instance = this;
    }
…或者只是将暴露其他属性/方法标记为
static
,尽管这会变得更难管理


我需要提到的是,使用
static
有时会导致糟糕的代码设计(相反,您可以通过构造函数将
Main
的实例传递给需要它的类)

我知道,这不是流行的答案。。。 使用静态属性公开实例是一个非常糟糕的主意。Singleton反模式非常流行,但不应该如此,它会导致不良的实践,并不必要地将类彼此联系起来

你需要问问自己是否真的需要在其他类中引用主类?AS3有一个事件系统,可以为您提供所需的所有松散耦合。如果显示对象需要与主类实例通信,可以通过显示列表发送事件来实现

依赖关系管理的问题最好由依赖关系注入框架来处理(其中许多框架都有一些集中式消息传递系统,到目前为止,它胜过了显示列表中的事件)。如果您觉得任何流行的(PureMVC、RobotLegs等)都太过分了,您可以自己轻松创建(一个简单且有限的)一个


有很多工具和模式永远不必依赖于单例或静态实例访问器,因为它们使您的生活变得悲惨,代码变得脆弱、不灵活、不稳定、不可靠和有缺陷。

为主类创建接口,并将其作为对在主类中创建的子类的引用传递。但实例的好处是它不需要引用,并且在代码的任何一层都可用,但正如Antoine所说,它可能是糟糕设计的陷阱。这是有道理的。我将尝试避免静态和单例,并将所有控件保持在main。不过,我得研究一下怎么做。你本可以举一些例子,但无论如何还是要感谢你的指导s