【发布时间】:2011-09-21 06:50:35
【问题描述】:
我想知道在每个对象中创建舞台非静态引用而不是使其成为全局对象有什么好处。因此,我只有解除引用 null 的问题。但是,一定有 Adobe 工作人员这样做的原因。那么,有人可以向我解释这种行为吗?当我使用类似下面的代码并在需要舞台的任何地方使用 gStage 时,我会遇到什么问题?
package
{
public var gStage: Stage;
public class Main extends Sprite;
{
public function Main()
{
if (stage)
init();
else
stage.addEventListener (Event.ADDED_TO_STAGE, init);
}
public static function init(): void
{
stage.removeEventListener (Event.ADDED_TO_STAGE, init);
gStage = stage;
}
}
}
顺便说一句,为什么在我见过的每个 AS3 代码示例中 Main 都扩展了 Sprite?
【问题讨论】:
-
为什么应该舞台是全球性的?
-
这会抛出一个空指针异常。首先确保 stage == null 然后在其上调用函数。
-
全局变量(通常)打破了面向对象的编程范式。只需将所有内容放在同一个舞台上,并使用 Event 对象进行通信。扩展 Sprite 的名为 Main 的示例肯定是文档/控制器类,它们已经被添加并可以访问舞台。您应该阅读一些有关 AS3 的书籍 - 要了解的内容很多,而通过谷歌搜索答案并不是理解该语言的明智方法。
标签: actionscript-3 global-variables stage