FlashBuilder edit Класс символа, определенный в Flash IDE - PullRequest
0 голосов
/ 21 февраля 2012

При кодировании в Flash IDE я очень часто использую следующую процедуру для создания специализированных версий классов MovieClip:

Я проектирую свой объект в IDE, например, добавляю две кнопки и даю имимена экземпляров "btn1" и "btn2".Затем я выбираю их вместе и конвертирую в символ.Затем я выбираю «Экспорт для ActionScript» и присваиваю им имя класса, скажем, «MyClass».

Затем я пишу специальный MyClass.as для него, например:

public class MyClass extends MovieClip{
    private var _button1:Button;
    private var _button2:Button;

    public function MyClass(){
        this.addEventListener(Event.ADDED_TO_STAGE, init);
        ....
    }

    private function init(e:Event){
        _button1 = this["btn1"];
        _button2 = this["btn2"];
    }

    ...
}

(PS: я знаю, что мне не пришлось бы присваивать значения частным переменным _button1 и _button2, и вместо этого я мог бы напрямую вызывать btn1, но мне нравится использовать только переменные типа в моем коде)

Это работаеточень хорошо во Flash IDE.когда я создаю новый экземпляр MyClass (), он будет содержать все элементы, которые я поместил в Flash IDE при определении символа.Это очень удобно и просто.

Теперь я хочу сделать то же самое в FlashBuilder.

Для этого я разработал MyClass Symbol, как и прежде в Flash IDE, присвоил ему имя класса MyClass, а затемвыберите символ библиотеки и экспортируйте его в MyClass.SWC

. В Flash Builder я добавляю MyClass.SWC в путь сборки, и я пишу MyClass.as с тем же кодом, что и в примере Flash IDE.но на этот раз код не будет работать.на

_button1 = this["btn1"];

я получу сообщение об ошибке # 1069 о том, что «btn1» не был определен.

Итак, как это сделать правильно при разработке с помощью Flash Builder?

PS: я использую пакет по умолчанию в Flash IDE при установке имени класса для символа, а также в FlashBuilder для файла as

Спасибо!

Ответы [ 2 ]

0 голосов
/ 31 мая 2013

Вам не нужно использовать SWC (но вы можете). Есть способ сделать Flash Builder и Flash IDE хорошо сплетенными для проекта, но вы должны правильно их настроить. В IDE flash - перейдите в «Правка» -> «Настройки», затем выберите «ActionScript». Щелкните по настройке actionscript 3 и укажите исходный путь к папке, содержащей все нужные вам файлы .as. Затем во Flash Builder перейдите в проект -> свойства. Нажмите «Путь к сборке Actionscript» и перейдите на вкладку «Исходный путь». Здесь выберите ту же папку, которую вы выбрали в ide (моя папка называется lib). Теперь снова в IDE установите класс документа относительно папки, которую вы выбрали. Поэтому, если вы выбрали lib, и внутри lib находятся папки com, внутри этого телефона и внутри этого MainClass.as, тогда в базовом классе IDE вы должны ввести com.phone.MainClass. Теперь, когда вы меняете код Flash Builder и компилируете в IDE, он должен работать для вас:)

Кроме того, здесь есть более простой (возможно, более понятный) способ доступа к элементам в вашей библиотеке

_phoneItselfClass = getDefinitionByName("PhoneItself") as Class;
_phoneItself:Sprite = new _phoneItselfClass() as Sprite;

Это может быть как ваша "основная панель". Тогда все кнопки могут быть доступны следующим образом:

_phoneItself [ "btn1"]. AddEventListener .... _phoneItself ["btn2"]. visible = true;

Ура, Jim

0 голосов
/ 21 февраля 2012

Могу ли я предположить, что теперь вы переходите на Flash Builder, чтобы вы немного изменили свой подход. Хотя в использовании SWC нет ничего плохого, ваши ресурсы встроены во время компиляции, а это значит, что вам нужно перекомпилировать приложение, если вы их измените.

Я использовал подход, заключающийся в том, что мувиклипы помещаются в SWF-файл и загружаются в него, а затем для обеспечения безопасности типов, которую вы описываете, я использую подход IMediaLibrary. Смотрите следующую статью:

Извлечение класса времени выполнения

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

...