我正在学习Flash Builder,因此我可以为我的Flash Pro项目添加一些额外的功能。
假设我创建了一个名为foo.fla的新Flash Pro文件。然后我可以打开Flash Builder并创建一个新项目(在设置向导中,我将我的foo.fla文件指定为项目的目标)。然后,向导将创建一个包含一个名为foo.as的文件的新项目,该文件扩展了Sprite。
现在我希望这个初始文件是某种根,并且是我可以创建所有MovieClip需要共享的变量的重要中心位置。但是,我无法弄清楚当我的项目运行时这个文件究竟是用于什么的。它似乎不对应于我的任何影片剪辑的舞台或父级。它的构造函数似乎甚至没有被调用。这个文件用的是什么?有没有办法可以用它来存储“全球”的东西?
答案 0 :(得分:0)
为了#34;链接"它是你的FLA,你想把它设置为文档类:
一旦你这样做,应该在启动时调用构造函数。
答案 1 :(得分:0)
这个类正是你的想法:root *。
您提供的类是与.fla文件关联的类。 它被称为文档类或主类。
您可能熟悉将库符号与类关联的概念。 假设您创建了一个MovieClip,将其添加到您的库中并为其定义一个类。
现在这几乎是一样的,除了你把类添加到文档中。
当Flash播放器执行.swf文件时,它将实例化您的类并将其添加到显示列表中。这有几个含义: 该类必须是一些DisplayObject,因为它被添加到DisplayObjectContainer。 这就是你扩展Sprite的原因。 (如果你不需要时间轴,Sprite是一个你应该比MovieClip更喜欢的轻量级类)
这是一个奇怪的部分,还记得那里吗? 是的,在创建swf时,将实例化文档类,并将结果对象添加到显示列表中,这意味着root实际上不是显示层次结构的根。有一个父容器,这是阶段。 将root视为应用程序的根,而不一定是所有根的最高根。
这是(imo)最奇怪的事情: 您可以在文档类的构造函数中访问stage属性。 对于扩展DisplayObject的任何其他类都不是这样(除非你通过将stage作为参数传递给构造函数来强制它,你不应该这样做),并且谁的对象将最终出现在显示列表中,因为你必须在创建后添加它们。 您可能想在这样的构造函数中使用stage属性,该构造函数是文档类的构造函数(因为您可以),但这会导致问题,因为您永远无法判断您的文档类是否实际用作文档类。 如果要在其他项目中实例化当前文档类,则它不具有作为文档类的特殊状态。这将是该项目的所有其他常规课程。 在这种情况下,stage在构造函数中将为null。因此,即使可以,也不要在构造函数中访问stage。 如果您需要舞台,请等待它可用。这是ADDED_TO_STAGE事件触发的时间。