2013-06-25 4 views
0

Скажем, у меня есть видеоклип «Gameboard», который состоит из нескольких других клипов, таких как «Счетчик» и «MessageBox». Каждый из этих субклипов, в свою очередь, имеет такие экземпляры, как TextFields («myScore») или графические символы.Как ссылаться на экземпляры Flash IDE из Flash Builder

Каждый из этих классов является сложным в том, что они реагируют на события/сигналы, поэтому мне нужно ссылаться на них

Мой нынешний подход был установить параметры экспорта всех клипов (mypackagename.Counter для например.), Который имеет mypackagename.Counter.as в FlashBuilder. Затем, когда родительский (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 
} 

Учитывая, что ребенок мувиков может существовать только на разных, как я могу безопасно получить доступ к экземпляру «MYCounter» по имени или типу или даже один из его детей («MyTextField»).

У меня довольно запутанный рабочий процесс - я импортирую файл иллюстратора, который содержит один ресурс Gameboard, который содержит дизайн для Counter и других дочерних MC. JSFL используется для конвертирования фигур фигур в клипе, а затем их смены на одну пьесу. Когда я меняю настройку параметров автоматического объявления этапа, я получаю несколько ошибок, поэтому, надеюсь, есть решение, которое позволяет избежать этого параметра.

Возможно ли преобразование игрового поля в компонент Flash IDE и создание свойства в среде IDE, которая относится к «myCounter», например?

Спасибо за чтение !!

Майк

ответ

1

Не уверен, что, если я вас правильно понимаю, но вы можете получить доступ к ребенку-MovieClips или текстовые поля через его имя. В этом случае вы можете создать 1 класс для GameBoard и создать несколько геттеров для детей.

  • 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"]; } 
    } 
    } 
    

Вы также можете просто только это [ «myCounter»] и этот ["myCounter"] ["myTf"] в вашем коде, но я предпочитаю создавать для него геттеры.