假设我有一个Movie Clip“Gameboard”,其中包括其他几个电影剪辑,如“Counter”和“MessageBox”。 这些子剪辑中的每一个都具有TextFields(“myScore”)或图形符号等实例。
这些类中的每一个都很复杂,因为它们响应事件/信号,所以我需要引用它们
我目前的做法是在所有剪辑上设置导出设置(例如mypackagename.Counter),它在FlashBuilder中有一个mypackagename.Counter.as。然后,一旦父(Gameboard)被添加到舞台,我通过所有孩子递归并通过索引访问(我知道......非常糟糕)..这样的事情(没有这个片段方便但只能说明不好代码我想删除)
function findChild(doc:DisplayObjectContainer):void
{
//loop through doc.children
//get current child . ToString check if its [ object Counter ] etc
// if a match is found set a variable locally to reference it
}
考虑到子影片剪辑可能只存在于不同的帧上,如何通过名称或类型甚至其中一个孩子(“myTextField”)安全地访问“myCounter”实例。
我有一个相当复杂的工作流程 - 因为我导入了一个插图文件,其中包含一个Gameboard资产,其中包含Counter和其他子MC的设计。 JSFL用于将Piece Shapes转换为Movie Clips,然后多次交换为单件。当我更改自动声明阶段实例设置时,我会收到多个错误,所以希望有一个避免此设置的解决方案。
是否可以将游戏板转换为Flash IDE中的组件,并在IDE中创建一个引用“myCounter”的属性?
感谢您阅读!!
麦克
答案 0 :(得分:1)
不确定我是否理解正确,但您可以通过它的名称访问子动画片段或文本字段。在这种情况下,您可以为GameBoard创建一个类并为子项创建一些getter
TextField myTf,myCounter的子项,名称 myTf
package {
public class GameBoard extends MovieClip {
private function get _myCounter():MovieClip { return this["myCounter"]; }
private function get _myTf():TextField { return _myCounter["myTf"]; }
}
}
你也可以在你的代码中只使用这个[“myCounter”]和这个[“myCounter”] [“myTf”],但我更喜欢为它创建getter。