0

假设我有一个电影剪辑“游戏板”,它由其他几个电影剪辑组成,如“计数器”和“消息框”。这些子剪辑中的每一个又具有文本字段(“myScore”)或图形符号等实例。

这些类中的每一个都很复杂,因为它们响应事件/信号,所以我需要引用它们

我目前的方法是在 FlashBuilder 中具有 mypackagename.Counter.as 的所有剪辑(例如 mypackagename.Counter)上设置导出设置。然后,一旦将父级(游戏板)添加到舞台上,我就会递归所有子级并按索引访问(我知道.. 非常糟糕).. 像这样的东西(手边没有这个片段,但只说明了坏处我要删除的代码)

 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
 }

考虑到子影片剪辑可能只存在于不同的帧上,我怎样才能安全地按名称或类型访问“myCounter”的实例,甚至是其中一个子项(“myTextField”)。

我有一个相当复杂的工作流程——我导入了一个插画文件,其中包含一个 Gameboard 资产,其中包含 Counter 和其他子 MC 的设计。JSFL 用于将片段形状转换为影片剪辑,然后多次交换为单个片段。当我更改自动声明阶段实例设置时,我收到多个错误,因此希望有一个解决方案可以避免此设置。

是否可以将游戏板转换为 Flash IDE 中的组件并在 IDE 中创建一个引用“myCounter”的属性?

谢谢阅读!!

麦克风

4

1 回答 1

1

不确定我是否理解正确,但您可以通过其名称访问子电影剪辑或文本字段。在这种情况下,您可以为 GameBoard 创建 1 个类并为孩子创建一些 getter

  • MovieClip GameBoard 添加了一个 GameBoard 类。
  • MovieClip myCounter,GameBoard MovieClip 的子级,名称为myCounter
  • 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"]; }
    }
    }
    

您也可以只在代码中使用 this["myCounter"] 和 this["myCounter"]["myTf"],但我更喜欢为它创建 getter。

于 2013-06-25T16:24:22.493 回答