AS3从嵌套MovieClip的时间轴访问变量

时间:2013-10-23 22:54:14

标签: actionscript-3 flash

编辑:我自己解决了这个问题,并在下面提供了答案。

我的主时间轴中有一个名为characterDismissed的变量,它是一个布尔值。我还有一系列嵌套的MovieClip(MovieClip中的MovieClip),它们看起来像:Stage>容器>列表>的按钮。

在嵌套底部的Buttons MovieObject中,我试图输出characterDismissed的值,看它是否可以看到或修改它:

trace("characterDismissed is: " + characterDismissed);

这显然不起作用,我明白为什么它不起作用(因为characterDismissed不是Buttons ActionScript中的变量,而是主时间轴的ActionScript,所以它还没有characterDismissed变量的概念。 )

如何使AS3中的按钮MovieClip可以访问此变量?我已经尝试过root.characterDismissed,parent.characterDismissed,this.parent.characterDismissed,甚至是parent.parent.parent.characterDismissed等。但是这些总是让我对这个错误有所了解:

  

1119:通过带有静态类型flash.display的引用访问可能未定义的属性characterDismissed:DisplayObjectContainer。

我觉得我已经阅读了几天来处理这个问题的建议,但没有任何工作,而且由于我对AS3的理解已经有限,我对词汇没有适当的把握以便更好地研究它我已经搜索过,或者知道通常最终会在其他论坛上做出模糊回应,或类似但不是非常正确的问题/答案。

1 个答案:

答案 0 :(得分:1)

我最终找到了自己的答案,这就是我想出的:

我创建了一个新的ActionScript 3.0类文件,并将其命名为GlobalVars(不过,您可以将其命名为任何名称。)并将其保存到我的主.FLA文件旁边的项目目录中。在GlobalVars中,我创建了一个名为testVar的测试变量,将其设置为public,然后设置为static。

我对此的理解是,public意味着任何东西都可以修改它,而static意味着这个变量在整个程序中都是相同的值。看起来像这样:

public static var testVar:Number = 1234;

然后在我的主项目AS3和嵌套对象的AS3中我添加了:

import GlobalVars;

这会将我制作的类以及我在GlobalVariables中配置的任何函数或变量添加到时间轴上的主AS3脚本中。

现在,我可以通过在变量前面添加类名来访问或更改这些AS3脚本中的变量,如下所示:

GlobalVars.testVar += 20; // Add 20 to testVar.

现在,只要我将GlobalVars导入到我的脚本中,我就可以从任何地方访问和修改这些变量。

希望这可以帮助那些发现自己缺乏词汇量的其他人正确表达对此主题的搜索。我试图在我的解释中包含尽可能多的关键字,以帮助有类似搜索查询的人。