Archive for March, 2008

komponenty flash i Flex Builder, import fl.controls

Dzięki pomocy tego forum dowiedziałem się właśnie, jak używać komponentów Flash CS3 np. z pakietu fl.controls, w środowisku Flex Builder. Wystarczy do projektu dodać ścieżkę do źródeł komponentów:

(Eclipse->Project->Properties->ActionScript Build Path->Add Folder)
C:\Program Files\Adobe\Adobe Flash CS3\pl\Configuration\Component Source\ActionScript 3.0\User Interface\
albo w wersji angielskiej CS3:
C:\Program Files\Adobe\Adobe Flash CS3\en\Configuration\Component Source\ActionScript 3.0\User Interface\

i od tego momentu polecenia typu import fl.controls.UIScrollBar nie będą wzbudzały irytacji fleksa. Oczywiście zakładam, że kompilacja odbywa się we Flashu, cała zabawa potrzebna jest wyłącznie dla spokoju Buildera i czystego panelu Problems.

flextech: coraz więcej się dzieje

Dziś znalazłem ciekawy portal, jeden z niewielu polskich o Fleksie. Kiedy będzie pierwsza książka?

flash, flex builder i konflikt nazw

Kiedy ktoś chciałby, jak ja, zmajstrować klip we Flashu, ale oprogramować go we Fleksie, może napotkać kłopot. Nazwy nadane obiektom we Flashu nijak nie są automatycznie rozpoznawane we Flex Builderze, bo i nie mogą. Dlatego przy próbie użycia takiego obiektu dostaniemy od razu komunikat “1120: Access of undefined property moj_biedny_mc [...]“. Niestety pierwsza reakcja ? zadeklarować zmienną ? również nie pomoże. Tu z kolei zostaniemy poczęstowani tekstem o konflikcie nazw przy kompilacji “1151: A conflict exists with definition moj_biedny_mc in namespace internal.“, bo Flash napotka deklarację zmiennej z kodu i drugą, automatycznie wygenerowaną z obiektu.

Najprostszym znanym mi sposobem, całkiem znośnym, jest przepisanie obiektów stworzonych ręcznie do zmiennych za pomocą getChildByName(); Musimy tylko znać nazwy nadane we Flashu, np.:

// zakładam, że w pliku .fla stworzyłem na scenie klip o nazwie "moj_reczny_mc".
public var moj_programowy_mc:MovieClip = getChildByName('moj_reczny_mc') as MovieClip;
// jeśli stworzyłem sobie pole tekstowe "moje_reczne_pole", to działam analogicznie:
public var moj_programowe_pole:TextField = getChildByName('moje_reczne_pole') as TextField;

Końcówki “as MovieClip” i “as TextField” są konieczne,bo metoda getChildByName() zwraca obiek typu DisplayObject i trzeba go rzutować na właściwy typ.

Jest jeszcze inny sposób na konflikty nazw, ale mniej wygodny: wszystkie “nazwane” elementy powiązać z odpowiednimi klasami, a w actionscripcie wstawiać ich egzemplarze w odpowiednie miejsca, np.:

moj_programowy_mc = new MojRecznyMC;
moj_programowy_mc.x = 10;
moj_programowy_mc.y = 10;

Jednak kiedy taki obiekt zawiera kilka nazwanych elementów, np. pól tekstowych, zabawa robi się żmudna.

« Previous Page