DisplayObject dan Custom Event
Flash bersifat event driven. Artinya, kinerja dan mekanisme aplikasi yang kita buat sangat tergantung pada cara kita menangani event. Dalam tulisan ini, saya mencoba menjelaskan cara membuat custom event dalam sebuah DisplayObject.
Kita bisa menggunakan class flash.events.Event untuk membuat event baru. Sebenarnya ada dua cara untuk membuat event. Ada beberapa class yang sudah memiliki event dispatcher , salah satu di antaranya adalah DisplayObject dan turunannya seperti Sprite dan MovieClip.
DisplayObject memiliki public method bernama dispatchEvent() yang bisa kita manfaatkan untuk membuat custom event dengan mudah tanpa harus mengimplementasikan interface IEventDispatcher karena DisplayObject itu sendiri adalah subclass dari class EventDispatcher.
Sebagai contoh, saya membuat animasi sederhana seperti ini (Klik untuk memulai animasi ):
Aplikasi ini memiliki 2 buah class yaitu Main dan Animator. Main adalah class utama atau Document Class. Animator adalah class yang bertugas membuat objek berupa kotak dengan warna acak sekaligus membuat animasinya.
Secara garis besar, mekanismenya adalah sebagai berikut:
- Selama animasi berjalan, jika nilai alpha dari sebuah kotak kurang dari atau sama dengan 0, Animator akan menyiarkan sebuah custom event bertipe ZERO_ALPHA.
- Event ZERO_ALPHA “didengarkan” oleh Main dan pada saat event ini terjadi, Main akan membuat sebuah objek kotak yang baru sekaligus menghapus kotak yang lama dari DisplayList.
Catatan – Mekanisme yang sama bisa saja dibuat tanpa custom event, cukup dengan mang-handle Event.ENTER_FRAME dalam class Main. Di sini saya ingin membuat contoh yang sederhana sehingga kita bisa fokus kepada cara membuat custom event. Di samping itu, jika aplikasi yang kita buat semakin kompleks, mungkin Event.ENTER_FRAME kurang sesuai dan terlalu banyak memakan CPU.
Pada dasarnya, untuk membuat custom event dalam sebuah class yang merupakan subclass dari EventDispatcher kita hanya memerlukan 3 hal yaitu:
- sebuah static variable yang bersifat public dan bertipe string. Variabel ini adalah tipe dari custom event yang kita buat.
- membuat sebuah objek bertipe Event
- mengeksekusi dispatchEvent() dengan objek #2 di atas sebagai argumen
Animator
Main.as
Sekian. Thanks for reading.
Comments [1]
1. par_sambo , 899 days ago #
Mo tanya nih pak,
kalau di contoh, animator me-dispatch event yang di-dengar oleh main, yang mana main itu parentnya animator.
Kalau kita mau kirim event ke sibling gimana ya? Saya coba pake contoh itu gak bisa didengar oleh siblingnya. Dalam hal ini sibilingnya dari class yang berbeda, cuma di dalamnya udah diregister eventhandler untuk event zeroalpha.
Thanks untuk bantuannya.
Commenting is closed for this article.