如何从其他时间轴中更改主时间轴中的变量的值?

时间:2009-06-15 16:43:32

标签: flash actionscript-3 timeline

在AS2中,很容易从其他时间轴中的变量更改值。现在我不能用旧方式做到这一点!

基本上我需要的是从另一个时间轴中改变主时间轴中的变量的值。

示例:

主要时间表:

var totalA:int = 0;

将eventListener添加到函数后的其他时间轴:

parent.parent.totalA++;

所以它不起作用。谁能解释为什么? 感谢

4 个答案:

答案 0 :(得分:0)

嗯......我解决了。

使用路径:

创建一个MovieClip
var A_mc:MovieClip = MovieClip(this.parent.parent);

然后我引用了它:

A_mc.totalA++;

答案 1 :(得分:0)

更好的解决方案是使用全局类。您可以从所有类中引用它,并可以在其中设置可随处访问的变量。

看看http://www.uza.lt/codex/as3-global-object/

Global Object是一个Singleton,它允许您将动态变量存储在AS3应用程序中的全局可访问位置。这使开发人员能够完成自我注册可视组件,全局事件和事件监听器等事情。

答案 2 :(得分:0)

这一切都取决于你想要做什么,但是你可能想要维护的任何全局变量的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;

答案 3 :(得分:0)

我还想补充一点,如果你对OO实践感兴趣,我不会直接访问该变量。

你可以在Josh上面提到的Singleton中设置一个函数。它有助于将该变量封装在函数内部。您应该将函数命名为有意义的函数,例如:

function addToTotal (int amount) :void

这样,用于计算总数的所有函数都被包含在Singleton和函数中。如果您以某种方式需要稍后进行总更改或者需要更改变量,则更改仅限于函数。

相关问题