Как мога да свържа символ на библиотека със съществуващ клас

Използвам 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 в библиотеката Asses.fla)

Заобиколното решение, което следвам, е:

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

Но исках по някакъв начин customButton_Instance да се асоциира автоматично с класа customButton. Някакви идеи моля?


person Vishwas    schedule 21.02.2013    source източник
comment
защо няма тип в customButton_instance? със сигурност е поне един от основните типове, напр. Спрайт, MovieClip. Във вашия пример изглежда, че имате достъп до класа, посочен като символ в тага за вграждане, защо не, заредете assets.swf във вашия домейн на приложението и getdefinition за този клас?   -  person Lukasz 'Severiaan' Grela    schedule 21.02.2013
comment
Да.. Аз също се опитах да го направя (използвайки app.view.CustomButton), но получавам грешка при използване на type за customButton_Instance.   -  person Vishwas    schedule 21.02.2013
comment
също така, всъщност исках да го експериментирам с вграждане на rathar, отколкото с load   -  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 или динамично зареждане чрез натоварване   -  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