有没有办法制作主类 - 基于主.fla - 静态的那个?所以我们可以在java中使用它,能够从其他类引用它,因为我必须将main本身的实例作为参数传递给类,否则我会松散引用。 我试图添加静态前缀但似乎as3不允许它。
答案 0 :(得分:9)
AS3中没有静态类的概念。
您可以使用单例模式公开主类的唯一实例:
public class Main extends Sprite {
public static var instance:Main;
public function Main() {
instance = this;
}
...或者只是将其他属性/方法标记为static
,尽管它变得更难管理。
我需要提一下,虽然使用static
有时会导致错误的代码设计(相反,您可以通过其构造函数将Main
的实例传递给需要它的类)
答案 1 :(得分:3)
这不是流行的答案,我知道...... 使用静态属性来公开实例是一个非常糟糕的主意。 Singleton反模式很受欢迎,但不应该,它导致不良做法,并且不必要地将类相互联系起来。
您需要问自己是否真的需要引用其他类中的主类? AS3有一个事件系统,可以为您提供所需的所有松耦合。如果显示对象需要与主类实例通信,则可以通过显示列表发送事件来完成。
依赖关系管理的问题最好由依赖注入框架处理(其中许多框架具有一些集中式消息传递系统,它远远超过了置顶事件的事件)。如果您觉得任何流行的(PureMVC,RobotLegs等)过度,您可以自己轻松创建(简单且有限的)。
有很多工具和模式永远不会依赖单身人士或静态实例访问器,因为它们会让你的生活变得悲惨,你的代码也很脆弱,不灵活,不可测试,不可靠和错误。