Как я могу связать библиотечный символ с существующим классом

Я использую Flash Develop для компиляции (не Flash IDE)

Вот пример кода:

   [Embed(source = 'assets.swf', symbol = 'app.view.CustomButton')
    var customButton_Class:Class ; 

    var customButton_Instance ;


    customButton_Instance = new customButton_Class();

Проблема в том, что этот "customButton_Instance" ничего не знает о app.view.CustomButton?? (На самом деле это означает, что нет смысла устанавливать класс как app.view.CustomButton в библиотеке assets.fla)

Обходной путь, которым я следую:

 var customButton:CustomButton = new CustomButton();
customButton.setView( customButton_Instance ) 

Но я хотел, чтобы customButton_Instance автоматически ассоциировался с классом customButton. Любые идеи, пожалуйста?


person Vishwas    schedule 21.02.2013    source источник
comment
почему в customButton_instance нет типа? конечно, это по крайней мере один из базовых типов, например. Спрайт, Мувиклип. В вашем примере похоже, что у вас есть доступ к классу, указанному как символ в теге внедрения, почему бы и нет, загрузить assets.swf в домен вашего приложения и получить определение для этого класса?   -  person Lukasz 'Severiaan' Grela    schedule 21.02.2013
comment
Я. Я тоже пытался это сделать (используя app.view.CustomButton), но получаю сообщение об ошибке при использовании типа для customButton_Instance.   -  person Vishwas    schedule 21.02.2013
comment
Кроме того, я действительно хотел поэкспериментировать с встраиванием, а не с загрузкой.   -  person Vishwas    schedule 21.02.2013
comment
:) конечно, но загрузка не увеличивает размер SWF, встраивание увеличивает :)   -  person Lukasz 'Severiaan' Grela    schedule 21.02.2013
comment
приведите его так - app.view.CustomButton(customButton_Instance) чтобы сделать его такого типа, это ужасное соглашение об именах, которое я мог бы добавить.   -  person Neil    schedule 21.02.2013
comment
кастинг также приводит к ошибке времени выполнения. Я пришел к выводу, что EMBED не является рекомендуемым способом использования символов с их именем класса. Это невозможно сделать без обходных путей. Я думаю, единственный правильный способ - использовать swc или динамическую загрузку через load   -  person Vishwas    schedule 21.02.2013


Ответы (1)


При использовании Embed вы теряете связанный с символом класс. Вот как это работает.

Вместо этого, если вы используете Flash Pro, выберите «Опубликовать SWC», который затем можно добавить в проект FlashDevelop (во FlashDevelop: щелкните правой кнопкой мыши > «Добавить в библиотеку»), после чего все символы будут видны при завершении кода, как и любые другие. класс, и вы можете просто написать новый app.view.CustomButton() или создать собственный класс, расширяющий его.

person Philippe    schedule 21.02.2013
comment
да.. я заметил это. Embed имеет этот недостаток. - person Vishwas; 21.02.2013