Az előző két bejegyzésben megnéztük, hogyan ágyazhatunk be Flash tartalmakat az alkalmazásunkba, ezt helyi és távoli swf fájlokkal egyaránt kipróbáltuk. Elöljáróban megjegyezném, hogy nem vagyok egy Flash guru (értsd: nem értek a Flash programozáshoz), de ha már elkezdtük a témát, utánanéztem pár dolognak; sajnos megfelelő tapasztalat és IDE nélkül nem tudtam mindent kipróbálni. Szóval a mai bejegyzésben az Osp::Ui::Controls::Flash vezérlőben futó tartalom és az alkalmazás kommunikációjáról lesz szó. Bár az előző bejegyzésekben már láttuk, hogyan vezérelhetjük a Flash erőforrások lejátszását (play, stop, resume és pause funkciók), ezek azonban magának a vezérlőnek szóltak, nem a benne futó .swf kiterjesztésű fájlnak.
Némi háttér-információ szükséges a jelenség megértéséhez. A bada kizárólag az .swf kiterjesztésű tartalmakat eszi meg, amelyeket az Adobe által karban tartott ActionScript nyelvvel lehet programozni. Bár a nyelvnek a legfrissebb verziója a 3.0, a bada csak a 2.0-át támogatja. Tehát, az ActionScript több API-t is ajánl a flash-t beágíazó külső konténereknek, ezek az adott ActionScript verziótól (amely jelen esetben ugye a 2.0) és a lejátszó verziójától függenek; utóbbi a bada alatt a Flash Lite 3.1.
Szóval jelen esetben két API-t kapunk:
- fscommand2 API: konténer → Flash irányú üzenetek kezelésére
- ExtendedEvents API: Flash → konténer irányú üzenetek kezelésére
Az fscommand2 API főbb függvényei | |||
---|---|---|---|
GetBatteryLevel | az akkumulátor töltöttségi szintje | ||
GetNetworkConnectionName | a hálózati kapcsolat neve | ||
GetNetworkConnectionStatus | a hálózati kapcsolat állapota | ||
GetNetworkGeneration | a hálózat generációja (2G, 3G) | ||
GetNetworkName | a hálózat neve | ||
GetNetworkStatus | a hálózat állapota | ||
GetSignalLevel | a jelerősség mértéke | ||
GetVolumeLevel | a hangerő | ||
SetInputTextType | a beviteli mód megváltoztatása | ||
StartVibrate | rezgés on | ||
StopVibrate | rezgés off |
A kódot a Flash IDE-n keresztül adhatjuk hozzá az objektumokhoz, ez az fscommand2 és az ExtendedEvents függvényeire egyaránt igaz. Ha kiegészítettük a Flash objektumunkat a megfelelő sorokkal, már csak ki kell exportálnunk azt a bada által támogatott formátumban, ez a már tárgyalt ActionScript 2.0 és Flash Lite 3.1 kombót jelenti.
Persze az üzeneteket a badás alkalmazásunkban is le kell kezelnünk, ehhez implementálnunk kell az Osp::Ui::IFlashEventListener függvényt, amely, mint a neve is mutatja, ezen események feldolgozására szolgál. Itt két függvényünk lesz:
- OnFlashDataReceived(const Osp::Ui::Control& source, const Osp::Base::Collection::IList& paramList)
- OnFlashDataReturned(const Osp::Ui::Control& source, const Osp::Base::Collection::IList& paramList)
A függvények nevei és paraméterei magukért beszélnek, a hivatalos bada fejlesztői oldalon pedig egy példakódot és egy hozzá tartozó angol nyelvű leírást is találhat az, akit bővebben érdekel a dolog.
dr. Kind