[ sstanko78 @ 22.02.2010. 00:16 ] @
Imam seldeci problem:

Razvili nekoliko as3 class-a, koje se oslanjaju na Yahoo Astra flash biblioteku.
Zatim smo kreirali komponentu (symbol) koja nasleduje jednu od tih naših klasa.
Odlucili smo da distribuiramo tu našu komponentu u obliku mpx ekstenzije. Znaci
eksportovali smo komponentu u swc file i napravili ekstenziju.

Ukoliko zatim upotrebimo komponentu u novom projektu, dobijamo sledeci exception:

TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/addChildAt()
at fl.controls::BaseButton/fl.controls:BaseButton::drawBackground()
at fl.controls::LabelButton/fl.controls:LabelButton::draw()
at fl.controls::Button/fl.controls:Button::draw()
at fl.core::UIComponent/drawNow()
at com.yahoo.astra.fl.containers.layoutClasses::BaseLayoutPane/com.yahoo.astra.fl.containers.layoutClasses:BaseLayoutPane::redrawUIComponentChildren()
at com.yahoo.astra.fl.containers.layoutClasses::BaseLayoutPane/com.yahoo.astra.fl.containers.layoutClasses:BaseLayoutPane::draw()
at com.yahoo.astra.fl.containers.layoutClasses::AdvancedLayoutPane/com.yahoo.astra.fl.containers.layoutClasses:AdvancedLayoutPane::draw()
at com.yahoo.astra.fl.containers::BoxPane/com.yahoo.astra.fl.containers:BoxPane::draw()
at fl.core::UIComponent/drawNow()
at com.yahoo.astra.fl.containers.layoutClasses::BaseLayoutPane/com.yahoo.astra.fl.containers.layoutClasses:BaseLayoutPane::redrawUIComponentChildren()
at com.yahoo.astra.fl.containers.layoutClasses::BaseLayoutPane/com.yahoo.astra.fl.containers.layoutClasses:BaseLayoutPane::draw()
at com.yahoo.astra.fl.containers.layoutClasses::AdvancedLayoutPane/com.yahoo.astra.fl.containers.layoutClasses:AdvancedLayoutPane::draw()
at com.yahoo.astra.fl.containers::BoxPane/com.yahoo.astra.fl.containers:BoxPane::draw()
at fl.core::UIComponent/fl.core:UIComponent::callLaterDispatcher()
Cannot display source code at this location.


Ovo se ne dešava ukoliko u novom projektu uz naš menuBar na isti ekran dodamo Button kontrolu (onu koja se nalazi
u standardnom setu komponenti).
Da li je moguce resiti ovaj problem , tako da eventualni korisnici nase biblioteke ne moraju da
dodaju Button komponentu uz nas menuBar ?

[Ovu poruku je menjao sstanko78 dana 22.02.2010. u 01:28 GMT+1]

[Ovu poruku je menjao sstanko78 dana 22.02.2010. u 01:34 GMT+1]
[ shedvel @ 23.02.2010. 10:29 ] @
Pri kreiranju custom komponente na stage dodaj button ( iz components window-a), a zatim ga obrisi sa stagea, i uradi publish.
Alternativno kroz as3 custom class uradi import Button i SimpleButton klasa.
[ sstanko78 @ 23.02.2010. 13:19 ] @
@shedvel to nisam jos probao. Uradio sam juce sledece:

Code:

var skin1:Button_upSkin=new Button_upSkin();
var skin2:Button_selectedUpSkin=new Button_selectedUpSkin();
var skin3:Button_selectedOverSkin=new Button_selectedOverSkin();
var skin4:Button_selectedDownSkin=new Button_selectedDownSkin();
var skin5:Button_selectedDisabledSkin=new Button_selectedDisabledSkin();
var skin6:Button_overSkin=new Button_overSkin();
var skin7:Button_emphasizedSkin=new Button_emphasizedSkin();
var skin8:Button_downSkin=new Button_downSkin();
var skin9:Button_disabledSkin=new Button_disabledSkin();
        
            
var btn:Button = new Button();
btn.setStyle( "Button_upSkin", new Button_upSkin());
btn.enabled = false;
btn.visible = false;
addChild( btn );


Instancirao sam button i njegove skinove u as3 class-i od koje smo napravili komponentu (symbol)

Ne razumem zašto sam morao da instanciram skin class-e ?
[ shedvel @ 23.02.2010. 14:44 ] @


Nagadjam da ste kreirali custom cell renderer (sastavljen od dugmadi) za Astra menu komponentu, ali ste zaboravili da dodate stilove koji nisu nasledjeni.

Astra menu item renderer (davno koristio, ne secam se tacnog naziva klase) nasledjuje flash core UIcomponent ali i dodaje sopstvene stilove koji nisu nasledjeni od flash komponenti, te ih je stoga potrebno kreirati.

*ako pogadjam scenario, probaj sa dodavanjem u library (putem dodavanja pa uklanjajna sa stage-a) Button komponente, moguce da ces na taj nacin izbeci potrebu za direktnim kreiranjem skinova i ubrzati malo kreiranje.