只是想知道我是否可以从应用程序中的任何位置引用入口点对象?它是否可能分配给某个全局对象,例如舞台?
目前我使用静态方法和变量,但这会破坏封装。
只是想知道我是否可以从应用程序中的任何位置引用入口点对象?它是否可能分配给某个全局对象,例如舞台?
目前我使用静态方法和变量,但这会破坏封装。
如果someObject
在显示列表中,那么您有一个someObject.root
您正在寻找的参考。如果您someObject
从显示列表中删除,您将失去该参考。
我的回答是否定的,没有直接访问入口对象的方法,也不应该有:这就是封装的意义所在。在全球范围内访问某些东西几乎是 AS1 方式。当您通过隐式引用 MainClass 访问主实例时,您会使应用程序的某些部分紧密耦合,这通常是不好的。
但是,如果您确实需要它,您可以从多个选项中进行选择。
MainClass.instance
MainClass.getInstance()
我会选择后者。
package com.smth.application
{
public var mainObject:MainClass;
}
// in main app
package com.smth.application
{
public function MainClass()
{
mainObject = this;
}
}
它可能看起来有点类似于静态访问,但我认为这样您的代码将保留一些灵活性。
stage
是对应用程序顶层的引用,您可以通过显示树上的任何显示对象作为myDisplayObject.stage
. 使用自定义文档类时,它将是 的第一个子项(索引 0)stage
,除非您像 Bakapii 所说的那样手动将其他内容强制到 0 索引中。