AS3 从嵌套影片剪辑从时间线访问变量



EDIT:我自己解决了这个问题,并在下面包含了答案。

我的主时间轴中有一个名为 characterDisdisde 的变量,它是一个布尔值。我还有一系列嵌套的影片剪辑(MovieClips in MovieClips),看起来像:Stage> Container> List> Buttons。

在嵌套底部的按钮电影对象中,我尝试输出 characterDismissed 的值,只是为了看看它是否可以看到或修改它:

trace("characterDismissed is: " + characterDismissed);

这显然是行不通的,我理解为什么它不起作用(因为 characterDismissed 不是按钮 ActionScript 中的变量,而是主时间线的 ActionScript 中的变量,所以它还没有 characterDismissed 变量的概念。

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

1119:访问可能未定义的属性字符通过具有静态类型 flash.display:DisplayObjectContainer 的引用解除。

我觉得我已经阅读了几天来处理这个问题的建议,但没有任何效果,而且我对 AS3 的理解已经有限,我没有正确掌握词汇来更好地研究我已经搜索过的内容,或者理解通常最终在其他论坛上得到模糊回复的内容, 或类似但不完全正确的问题/答案。

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

我制作了一个新的 ActionScript 3.0 类文件并将其命名为 GlobalVars(不过,您可以随心所欲地命名它),并将其与我的 main 一起保存到我的项目目录中。FLA 文件。在 GlobalVars 中,我创建了一个名为 testVar 的测试变量,将其设置为 public,然后是静态变量。

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

public static var testVar:Number = 1234;

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

import GlobalVars;

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

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

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

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

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

最新更新