我在尝试编辑容器精灵内的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.
如何编辑这些变量?出了什么问题?
答案 0 :(得分:3)
问题很可能是getChildAt()返回一个DisplayObject。 DisplayObject不是动态类,这意味着您不能随意创建和访问变量。另一方面,MovieClip是一个动态类,因此您可以按照自己的意图创建和访问任意变量。问题是,即使你知道你正在访问的对象是MovieClip,Flash也不知道这一点并限制你使用DisplayObject的功能,前面提到的是getChildAt()返回的功能。
为了解决这个问题,您必须明确让Flash知道您正在处理的对象是MovieClip。这是通过所谓的铸造来完成的:
MovieClip(container.getChildAt(i)).variable = value;
由于您现在让Flash知道该对象将是一个MovieClip,您可以利用MovieClip是一个动态类并访问您的变量这一事实。