在 AS2 中,很容易从其他时间线中的变量更改值。现在我不能用旧方法了!
基本上我需要的是从另一个时间线上的主时间线中的变量更改值。
例子:
主要时间线:
var totalA:int = 0;
其他时间线,将 eventListener 添加到函数后:
parent.parent.totalA++;
所以它不起作用。谁能解释为什么?谢谢
在 AS2 中,很容易从其他时间线中的变量更改值。现在我不能用旧方法了!
基本上我需要的是从另一个时间线上的主时间线中的变量更改值。
例子:
主要时间线:
var totalA:int = 0;
其他时间线,将 eventListener 添加到函数后:
parent.parent.totalA++;
所以它不起作用。谁能解释为什么?谢谢
更好的解决方案是使用全局类。您可以从所有类中引用它,并且可以在其中设置随处可访问的变量。
看看http://www.uza.lt/codex/as3-global-object/
Global Object 是一个 Singleton,可让您将动态变量存储在 AS3 应用程序中的全局可访问位置。这使开发人员能够完成诸如自注册视觉组件、全局事件和事件监听器之类的事情。
我还要补充一点,如果您对 OO 实践感兴趣,我不会直接访问该变量。
您可以在上面 Josh 提到的 Singleton 中设置一个函数。它有助于将该变量封装在函数中。你应该给你的函数命名一些有意义的名字,例如:
function addToTotal (int amount) :void
这样,计算总数的所有函数都封装在 Singleton 和函数中。如果您以后需要以某种方式进行总计更改,或者您需要更改变量,则更改仅限于函数。
这完全取决于您想如何做事,但是对于您可能想要维护的任何全局变量的 Singleton 类可能是最好的课程。如果您不熟悉单例设计模式,只需坚持将其转换为
//Example - Would move the parent movie clip 5 pixels to the right.
//You must cast it because there is no way for the compiler to know what the asset.
MovieClip(parent).x = 5;
嗯……我解决了。
使用以下路径创建了一个 MovieClip:
var A_mc:MovieClip = MovieClip(this.parent.parent);
然后我引用了它:
A_mc.totalA++;