Membuat
sebuah aplikasi yang kreatif itu menyenangkan. Banyak fitur yang
ternyata berguna tapi kadang keberadaanya jarang dikenal atau dipakai.
selain SharedObject, fitur lain yang jarang digunakan tetapi
menyenangkan adalah fitur klik kanan.
Yang
digunakan secara umum untuk menghilangkan menu klik kanan (seperti
zoom, quality, print) dan menu di atas (seperti file, view,control)
secara permanen, kita bisa menggunakan fungsi
fscommand(“showmenu”,false);
dengan
menset showmenu menjadi false, maka tampilan menu di atas dan di klik
kanan (kecuali settings dan about) akan hilang. Hanya jika flashnya
dibuka lewat browser ketika klik kanan menu tetap muncul. Untuk
mendisable sama sekali menu klik kanan, saya belum tahu caranya
tapi setidaknya ada cara untuk mengakalinya:
- jika hasilnya ditampilkan lewat browser, buat fungsi javascript buat mendisable klik kanan.
-
jika hasilnya ditampilkan lewat projector, convert swfnya dengan
software 3rd party untuk jadi standalone projector baru, hasil akhirnya
sama seperti yang ada di beberapa CD interaktif yang tidak bisa diklik
kanan.
Customize klik kanan
Ternyata eh ternyata.. ada lagi cara lain untuk customize fungsi klik kanan yaitu dengan object ContextMenu dan ContextMenuItem.
Mari kita buat contohnya..
Kita
akan membuat aplikasi berisi kotak yang bisa di-cut atau di-copy,
kemudian bisa di-paste di sembarang tempat seperti gambar ini:
Caranya.
Pertama2 buat movieclip, drag ke stage, klik movieclip, lihat
properties, beri instance name: kotak_mc. Kemudian buat dynamic text,
klik, lihat properties, isi bagian var dengan nama isiDinamikTeks.
Kemudian pada frame berikan actionscript berikut:
05 | isiDinamikTeks = "sekarang klik kanan di sembarang tempat\nuntuk memindahkan objek" ; |
11 | isiDinamikTeks = "sekarang klik kanan di sembarang tempat\nuntuk membuat objek baru" ; |
16 | if (isiDinamikTeks == "silakan klik kanan di kotak" ) |
18 | isiDinamikTeks = "woooiii... belum diapa-apain itu..\nklik cut atau copy dulu baru klik paste disini" ; |
22 | setProperty(kotak_mc, _x, _xmouse); |
23 | setProperty(kotak_mc, _y, _ymouse); |
24 | kotak_mc._alpha = 100; |
25 | isiDinamikTeks = "silakan klik kanan di kotak" ; |
29 | duplicateMovieClip(kotak_mc, "kotak" +i+ "_mc" , i); |
30 | setProperty( "kotak" +i+ "_mc" , _x, _xmouse); |
31 | setProperty( "kotak" +i+ "_mc" , _y, _ymouse); |
36 | var listMenuKotak:ContextMenu = new ContextMenu(); |
37 | var listMenuRoot:ContextMenu = new ContextMenu(); |
38 | var cutMenu:ContextMenuItem = new ContextMenuItem( "cut kotak" , potong); |
39 | var copyMenu:ContextMenuItem = new ContextMenuItem( "copy kotak" , salin); |
40 | var pasteMenu:ContextMenuItem = new ContextMenuItem( "paste kotak" , tempel); |
41 | var i:Number = new Number(1); |
42 | var cutBukanCopy:Boolean = new Boolean(); |
43 | var isiDinamikTeks:String = new String( "silakan klik kanan di kotak" ); |
45 | listMenuKotak.hideBuiltInItems(); |
46 | listMenuKotak.customItems = [cutMenu,copyMenu]; |
48 | listMenuRoot.hideBuiltInItems(); |
49 | listMenuRoot.customItems = [pasteMenu]; |
51 | kotak_mc.menu = listMenuKotak; |
52 | _root.menu = listMenuRoot; |
Mendeteksi Klik Kanan
Biasanya
kita mendeteksi input dari user adalah ketika mousenya mengklik objek,
dan itu defaultnya kita mendeteksi objek tersebut diklik kiri mouse.
Lalu bagaimana cara mendeteksi klik kanan?
kalau ini mungkin jarang yang tahu, karena ini tidak dalam dokumentasi yang disertakan Flash. Eh tapi ini tahu ya? Hehehe.. ini baca di e-book ‘flash hacks’
Jadi
ternyata ada fungsi ASnative() yang tidak terdokumentasi dan bisa jadi
backdoor ke fungsi-fungsi yang ada di flash (mungkin saya ceritakan
lebih lengkap kapan2
).
Nah, untuk mendeteksi klik kanan, kita bisa menggunakan fungsi ASnative(800,2)(2). Contoh sederhananya seperti ini:
1 | onEnterFrame = function () |
5 | trace( "klik kanan terdeteksi" ); |
Tidak ada komentar:
Posting Komentar