AS3:更改精灵内对象的变量

时间:2012-08-16 02:08:28

标签: actionscript-3 flash variables actionscript sprite

我在尝试编辑容器精灵内的MovieClip Class实例中的变量值时遇到问题。

动画片段是精灵“容器”的所有子项,但是当我尝试在for循环中使用container.getChildAt(i).variable = value;循环它时,我得到错误 -

Scene 1, Layer 'AS', Frame 1, Line 87   1119: Access of possibly undefined property name_ through a reference with static type flash.display:DisplayObject.

如何编辑这些变量?出了什么问题?

1 个答案:

答案 0 :(得分:3)

问题很可能是getChildAt()返回一个DisplayObject。 DisplayObject不是动态类,这意味着您不能随意创建和访问变量。另一方面,MovieClip是一个动态类,因此您可以按照自己的意图创建和访问任意变量。问题是,即使知道你正在访问的对象是MovieClip,Flash也不知道这一点并限制你使用DisplayObject的功能,前面提到的是getChildAt()返回的功能。

为了解决这个问题,您必须明确让Flash知道您正在处理的对象是MovieClip。这是通过所谓的铸造来完成的:

MovieClip(container.getChildAt(i)).variable = value;

由于您现在让Flash知道该对象将是一个MovieClip,您可以利用MovieClip是一个动态类并访问您的变量这一事实。