Flex 4: skinování aplikací
Na zdrojáku dnes vyšel můj článek o skinování aplikací ve Flexu 4. Zajímá-li vás tato problematika, můžete si jej přečíst.
Na zdrojáku dnes vyšel můj článek o skinování aplikací ve Flexu 4. Zajímá-li vás tato problematika, můžete si jej přečíst.
Zajímá vás jak prodat flexové aplikace do enterprise prostředí? Majitel firmy SiteOne, Jan Bezděk vám o tom bude povídat (a máte se nač těšit). Chcete vidět práce soutěžících, co by rádi Adobe software v hodnotě $2100? Každý kdo přijde bude rozhodovat o tom kdo vyhraje. Toto vše se odehraje v rámci únorového UG meetingu od 17:30 v kancelářích Adobe.
Před cca dvěma měsíci Adobe User Group Czech vyhlásila soutěž o software Adobe za $2000 dle vlastního výběru. Původní uzávěrka měla být na konci roku, ale většina z nás byla ráda, že stíhala svou práci. Termín jsme tedy prodloužili do konce ledna. V tuto chvíli je velmi málo lidí, kteří se budou účastnit – máte tedy velkou šanci na vítězství. Informace o soutěži naleznete zde.
Dnes jsem potřeboval vytvořit AIRovou miniaplikaci, která má vlastní chrome, jenže WindowedApplication (respektive Window/NativeWindow) ve Flex SDK 4 nemá property backgroundAlpha. Jak tedy na transparentní pozadí?
Řešení není nijak závratně složité. Nejdříve je třeba nastavit v AIR Application Descriptoru hodnotu systemChrome na none a transparent na true. Tohle se nijak neliší od předchozí verze SDK. Stejně jako dříve je třeba nastavit v tagu WindowedApplication několik hodnot:
Poté je třeba vytvořit nový skin pro komponentu WindowedApplication nejjednodušší řešení je udelat si kopii defaultního skinu a z ní odmazat pozadí, které tam mít nechceme. Výsledný skinClass pak vypadá zhruba takto:
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
alpha.disabledGroup="0.5" >
<fx:Metadata>
[HostComponent("Object")]
</fx:Metadata>
<fx:Script>
static private const exclusions:Array = ["backgroundRect", "bgFill", "contentGroup", "statusText"];
override public function get colorizeExclusions():Array {return exclusions;}
</fx:Script>
<s:states>
<s:State name="normal" />
<s:State name="disabled" stateGroups="disabledGroup" />
<s:State name="normalInactive" stateGroups="inactiveGroup" />
<s:State name="disabledInactive" stateGroups="disabledGroup, inactiveGroup" />
</s:states>
<!-- layer 2: content + status bar -->
<s:Group left="0" right="0" top="0" bottom="0" minHeight="24" minWidth="0" >
<s:layout>
<s:VerticalLayout gap="0"/>
</s:layout>
<!-- content -->
<s:Group id="contentGroup" width="100%" height="100%" minHeight="0" minWidth="0"/>
<!-- status bar -->
<s:Group id="statusBar" width="100%" minHeight="24" >
<!-- status text -->
<s:SimpleText id="statusText" top="2" bottom="2" left="10" right="10" verticalAlign="middle"
fontSize="10" color="0x585858" width="100%" truncation="1" />
</s:Group>
</s:Group>
</s:SparkSkin>
Tento vytvořený skin pak předejte WindowedApplication a vše je hotové.
Připomínám, že tento článek je psaný v době, kdy je Flex SDK 4 ve verzi beta 2. Ve finální verzi se může leccos změnit.
V pátek mi přestala fungovat licence na Flash Builder beta 1. Stáhl jsem tedy beta 2 a zjistil jsem, že SDK beta 1 v něm nefunguje. FB začne vyhazovat fatal errory a zanedlouho padne úplně. Nefunguje ani strom se soubory projektu. Kdo četl mé páteční příspěvky na Twitteru ví, že novou betu SDK považuji za nepoužitelnou. Jak tedy zařídit, aby fungoval FB beta 1?
Řešení je velice jednoduché. Před spuštěním FB nastavte datum na den, kdy vám licence ješte fungovala, spusťte FB a datum nastavte zpět. Není to pěkný workaround, ale funguje.
Adobe mě s SDK beta 2 opravu zklamalo. To, že proběhl masivní renaming mě nepřekvapilo, ale fakt, že třeba absolutně špatně fungují item renderery je k ničemu. Aplikace adaptovaná na beta 2 poměrně často vyhazuje bezdůvodné run-time errory, FB padá jako švestky a kolikrát mu dělá velké problémy vůbec kód zkompilovat. Pokud jej přesto chcete používat, připravte se na nutnost debugování kompileru, protože velice často vyhazuje hlášku unknown internal error. Zpravidla se jedná o chybu ve vašem kódu, takže vás čeká nepříjemné hledání.
Na včerejším UG meetingu byla vyhlášena soutěz o software od Adobe za $2100. V tomto článku naleznete podrobné informace o tom, jak se soutěže zůčastnit, co se může, co se naopak nesmí a jaká jsou pravidla. Zadání je natolik volné, že se může zůčastnit téměř každý, nemeškejte tedy a ukažte co ve vás je!
Nemohli jsme se rozhodnout pro jedno konkrétní téma, tak jsme jich připravili hned několik, abyste si mohli vybrat to, které vám nejvíce sedne.
Po skončení soutěže zdrojové kódy umístíme na Google Code, kde budou zdarma k dispozici každému zájemci.
Hotové příspěvky posílejte na můj e-mail ja (zavinac) viktorbezdek (tecka) cz.
Budeme se těšit s čím příjdete.
Dnes je po měsíční odmlce Adobe User Group meeting. Tentokrát bude speciální – český platform evangelista Tom Krcha se práve vrátil z letošní konference MAX a chce se s námi podělit o všechny zajímavé novinky z tohoto eventu. O tom, že toho nebylo málo svědčí například pohled na Adobe Labs, kde jsou ke stažení nové betaverze Flash Builderu, Flex SDK 4, Flash Catalystu, LCDS a mnoha dalších. Všichni také blázní z informace, že Flash CS5 bude umět kompilovat do nativního iPhone formátu, což je, povezme si upřímně, fakt pecka
Určite se dozvíme i něco nového o Flex Mobile Framework. Novinky nejsou pouze z pole Flash Platform, ale celého portfolia produktů Adobe, takže se je určitě nač těšit. Aby toho nebylo málo, ke konci prezentace vyhlásím soutěž o Adobe software za $2100. Pokud se meetingu nemůžete zůčastnit, během zítřka zde, a na dalších serverech o soutěži vyjdou podrobnosti.
Je tomu zhruba měsíc co Adobe vydalo betaverzi nového Flash Builderu (ex Flex Builder) a SDK 4.0.0.7219. Ač je to risk, rozhodl jsem se, že toto SDK využiji v produkčním prostředí, tedy na projektu jehož vývoj právě začíná. V následujících týdnech vás budu seznamovat se slastmi a strastmi nového prostředí i SDK.
Nové SDK jsem se rozhodl použít, protože mám z Adobe informace, že by nemělo dojít k žádnému renamingu, takže po vydání final verze bude třeba udělat „jen“ revizi kódu. Čas na tuto revizi ušetřím na skinování aplikace. Způsob jakým je vyrešeno u Spark komponent je opravdu pohodlné a intuitivní. Dokonce mnohem pohodlnější než s mnou propagovanou Degrafou. Zatím jsem narazil pouze na jednu feature, která mi chybí – pixel snapping u strokes (způsob jakým je vykreslován např. radius u oblých rohů). Nejedná se o nic kritického, ale potěšilo by mě, kdyby ve final releasu byla. Jako hodně příjemnou změnu považuji přepracování states. V této podobě jsou opravdu dobře použitelné a už se jim určite nebudu vyhýbat. Nový způsob práce s layoutem je také dobře vymyšlený. Praxe ukáže, jestli to není jen nadšení z něčeho nového.
Zatím jsem nenarazil na žádne bugy, které by mě omezily v práci. Rychlost kompilace je v naprostém pořádku a vývojové prostředí (zatím) nepadá. Pro tuto chvíli to považuji za vše oč má smysl se dělit. V příštím díle se podrobněji rozepíši o tvorbě MXML skinů pro komponenty.
© 2009 Buzzboot Corp.