有没有办法让主类--基于主.fla的类--成为静态的?所以我们可以像在java中一样使用它,能够从其他类中引用它,因为我必须将main本身的实例作为参数传递给一个类,否则我将释放引用。我试图添加静态前缀,但似乎as3不允许。
发布于 2012-11-21 23:43:33
AS3中没有静态类的概念。
您可以使用单例模式来公开主类的唯一实例:
public class Main extends Sprite {
public static var instance:Main;
public function Main() {
instance = this;
}...or只是将其他属性/方法标记为static,尽管它变得更难管理。
我需要指出的是,使用static有时会导致糟糕的代码设计(相反,您可以通过构造函数将Main的实例传递给需要它的类)。
发布于 2012-11-22 01:21:14
这不会是流行的答案,我知道...使用静态属性来公开实例是一个非常糟糕的想法。Singleton反模式非常流行,但不应该如此,它会导致糟糕的实践,并不必要地将类彼此联系在一起。
你需要问问自己,你是否真的需要在其他类中引用主类?AS3有一个事件系统,可以为您提供所需的所有松散耦合。如果显示对象需要与主类实例通信,可以通过显示列表发送事件来实现。
依赖项管理的问题最好由依赖项注入框架来处理(其中许多框架都有一些集中的消息传递系统,这远远超过了显示列表上的事件)。如果您觉得有任何流行的(PureMVC、RobotLegs等)是过度杀伤力,你可以很容易地自己创建一个(简单而有限的)。
有很多工具和模式永远不需要依赖单例或静态实例访问器,因为它们会让您的生活苦不堪言,让您的代码变得脆弱、僵化、不可测试、不可靠和有buggy。
https://stackoverflow.com/questions/13496718
复制相似问题