如何从Flash Builder中引用Flash IDE实例

时间:2013-06-25 00:09:10

标签: flash flash-builder

假设我有一个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”的属性?

感谢您阅读!!

麦克

1 个答案:

答案 0 :(得分:1)

不确定我是否理解正确,但您可以通过它的名称访问子动画片段或文本字段。在这种情况下,您可以为GameBoard创建一个类并为子项创建一些getter

  • 添加了GameBoard类的MovieClip 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"]; }
    }
    }
    

你也可以在你的代码中只使用这个[“myCounter”]和这个[“myCounter”] [“myTf”],但我更喜欢为它创建getter。