Manajemen Event dengan AsBroadcaster
Event handling dalam Flash dapat disederhanakan dengan memanfaatkan dua class yang tersedia yaitu class mx.events.EventDispatcher dan ASBroadcaster. Kedua class ini serupa tapi tak sama. Dalam tulisan ini saya akan memberi contoh sederhana tentang penggunaan AsBroadcaster.
AsBroadcaster
AsBroadcaster adalah salah satu dari sekian banyak Top-Level class yang tersedia ( built-in ). Class ini menyediakan event notification dan listener management yang dapat kita implementasikan pada berbagai object ( movieclips , dll). Class ini memungkinkan kita membuat sebuah relasi antara event source/broadcaster dan listener dengan mudah. Sebuah Event broadcaster adalah object yang menciptakan sebuah event dan menyiarkannya (broadcast) sehingga object lain yang bertindak sebagai pendengar (listener) dapat merespon event tersebut. Sama seperti relasi antara radio dengan pendengarnya.
Contoh
Sebagai contoh saya membuat sebuah movieclip di stage dan memberinya nama sq_mc . Movieclip ini akan bertindak sebagai event broadcaster . Pada saat di-klik, sq_mc akan menyiarkan ( broadcast ) sebuah event yang saya beri nama on_release .
Untuk menjadikan sq_mc sebuah event broadcaster, saya memanggil static function AsBroadcaster.initialize(obj:Object), di mana obj dalam contoh ini adalah sq_mc , dan saya buat juga dua buah object yaitu oListener1 dan oListener2 sebagai nantinya akan bertindak sebagai “pendengar”.
Pada saat di-klik, sq_mc akan menyiarkan event “on_release” untuk didengarkan oleh listener.
- AsBroadcaster.initialize(sq_mc);
- sq_mc.onRelease = function(){
- this.broadcastMessage("on_release");
- };
- var oListener1:Object = {};
- var oListener2:Object = {};
Karena Event yang di-broadcast oleh sq_mc bernama on_release, saya menambahkan sebuah handler dengan nama on_release pada masing-masing listener object.
- oListener1.on_release = function(evtObj:Object){
- trace("oListener1 notified");
- };
- oListener2.on_release = function(evtObj:Object){
- trace("oListener2 notified");
- };
Langkah terakhir adalah “mendaftarkan” kedua object tersebut sebagai sq_mc listener.
- sq_mc.addListener(oListener1);
- sq_mc.addListener(oListener2);
Output pada saat sq_mc di-klik:
oListener1 notified
oListener2 notified
Contoh 2
Dengan menggunakan AsBroadcaster, kita tidak hanya bisa memanajemen event dengan lebih baik tapi juga bisa membuat sebuah event baru sesuai keinginan kita.
Contohnya begini, misalnya saya punya sebuah movieclip bernama source_mc dan 3 buah movieclip lain bernama mcA,mcB, dan mcC. Jika square_mc saya klik, maka nilai _alpha movieclip ini akan berkurang, pada saat nilainya kurang dari 50, ketiga movieclip yang lain akan merespon dengan cara yang berbeda-beda. mcA berkurang _alpha-nya, mcB bergeser ke samping, dan mcC bergeser ke bawah.
- AsBroadcaster.initialize(source_mc);
- var o:Object = {};
- o.below50 = function() {
- mcA._alpha -= 1;
- mcB._x -= 1;
- mcC._y += 1;
- };
- source_mc.addListener(o);
- source_mc.onRelease = function() {
- this.onEnterFrame = function() {
- this._alpha -= 1;
- if(this._alpha < 50){
- this.broadcastMessage("below50");
- }
- if(this._alpha <=0){
- delete this.onEnterFrame;
- }
- };
- };
Demikian, semoga bermanfaat.
Comments [1]
1. achmad , 1485 days ago #
lieur pisan bro !( pusing )
maklum masih pemula…
action yang loe pake uweemang…. mantep..!!! salut buat loe..
ajarin gw donk..
Commenting is closed for this article.