Jalankan aplikasi dengan menekan Ctrl+Enter. Klik tombol tersebut dan

Akan tetapi kode tersebut kurang optimal, karena deteksi posisi masih terlalu luas, sehingga ketika kepala baru menyentuh titik terluar badan sudah dianggap sebagai dropTarget, sehingga lebih baik menggunakan metode pengukuran jarak agar akurasi lebih tepat. Untuk lebih jelasnya, perhatikan langkah berikut : 1. Lanjutkan file pada tutorial sebelumnya drag movieclip.

2. Klik frame 1 layer 2 buka panel Action F9 dan ubah kodenya menjadi sebagai

berikut : 1. var awal_x : Number = kepala . x ; 2. var awal_y : Number = kepala . y ; 3. 4. kepala . addEventListener MouseEvent . MOUSE_DOWN , pencetMouse ; 5. kepala . addEventListener MouseEvent . MOUSE_UP , lepasMouse ; 6. 7. function pencetMouse e : MouseEvent : void { 8. kepala . startDrag ; 9. } 10. function lepasMouse e : MouseEvent : void { 11. kepala . stopDrag ; 12. snap ke badan 13. var jarak = Math . sqrt kepala . x - badan . x kepala . x - badan . x + kepala . y - badan . y kepala . y - badan . y ; 14. if jarak 50 { 15. kepala . x = badan . x ; 16. kepala . y = badan . y ; 17. } else { 18. kepala . x = awal_x ; 19. kepala . y = awal_y ; 20. } 21. } 3. Jalankan aplikasi dengan menekan Ctrl+Enter. Klik dan drag kepala panda tersebut mendekati posisi yang tepat sekitar leher panda untuk menguji coba kode. Penjelasan kode : var awal_x:Number = kepala.x; Pada awalnya kordinat x dan y dari movieclip kepala disimpan di dalam variabel awal_x dan awal_y. Hal ini dimaksudkan agar apabila kepala tidak didrag pada posisi yang tepat, maka akan kembali ke posisi awal 103 kepala.addEventListenerMouseEvent.MOUSE_DOWN,pencetMouse; Selanjutnya movieclip kepala diberikan listener ketika mouse ditekan. Ketika event terjadi yaitu ketika Mouse ditekan, maka fungsi pencetMouse akan dijalankan. kepala.startDrag; merupakan kode untuk memulai mode drag sebuah objek. kepala.stopDrag; merupakan kode untuk mengakhiri mode drag sebuah objek. var jarak = Math.sqrt...; merupakan perhitungan jarak menggunakan metode pitagoras yaitu akar dari selisih kuadrat jarak antara movieclip kepala dengan movieclip badan. if jarak 50{...}else {...} merupakan kondisi untuk melakukan proses snap. Apabila jarak kurang dari 50 pixel maka posisi akan di snap, sedangkan jika lebih akan dikembalikan ke posisi awal_x dan awal_y. EnterFrame Event Enterframe Event merupakan kejadian yang dilakukan secara berulang-ulang sejak inisialisasi listener sampai dengan dihentikannya listener atau aplikasi ditutup. Sebagai contoh event ini digunakan untuk mendapatkan gerakan objek secara terus menerus. Perhatikan contoh berikut : 1. Buatlah sebuah file baru. Selanjutnya buatlah sebuah movieclip “animasi burung”, dimana di dalamnya terdapat animasi burung mengepakkan sayap secara frame by frame. 2. Klik movieclip “animasi burung” tersebut kemudian buka panel properties dan ketikkan “burung” pada kolom instance name. Gambar 137 . Movieclip dengan instance name “burung”

3. Buatlah sebuah layer baru layer 2. Klik frame 1 layer 2 buka panel Action F9

dan ketikan kode berikut : 1. function terbang e : Event : void { 2. var ob : Object = e . currentTarget ; 3. ob . x += 5 ; 4. } 5. 6. burung . addEventListener Event . ENTER_FRAME , terbang ; 4. Jalankan aplikasi dengan menekan Ctrl+Enter. Maka burung tersebut akan bergerak ke kanan secara terus menerus sampai keluar dari layar. 5. Selanjutnya kita dapat menambahkan sedikit logika agar burung tersebut dapat bergerak secara berulang ke kanan dan ke kiri. Ubah kode pada frame 1 layer 2 menjadi sebagai berikut : 1. var kecepatan : int = 5 ; 2. function terbang e : Event : void { 3. var ob : Object = e . currentTarget ; 4. ob . x += kecepatan ; 5. if ob . x 600 || ob . x 100 { 6. kecepatan = - 1 ; 7. ob . scaleX = kecepatan Math . abs kecepatan ; 8. } 9. } 10. 11. burung . addEventListener Event . ENTER_FRAME , terbang ; 6. Jalankan kembali aplikasi dengan menekan Ctrl+Enter, dan burung akan terbang secara berulang ke kanan dan ke kiri. Penjelasan program : var kecepatan:int = 5; merupakan deklarasi kecepatan burung. Nilai dari variabel ini bisa diubah secara dinamis ketika kondisi tertentu baris 5 terpenuhi. function terbange:Event:void{...} merupakan fungsi yang dijalankan secara berulang-ulang setelah kode addEventListener diaktifkan. var ob:Object = e.currentTarget; merupakan deklarasi variabel yang mengacu pada objek yang diperintah oleh eventListener, dimana dalam hal ini adalah movieclip denga n instance name “burung”.