--==** Silahkan Baca Sesuka hati anda.....!! Jangan lupa klik buku tamu ...!!**==--

Senin, 16 Januari 2012

klik kanan

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:
klikkananhack.jpg
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:
01function potong()
02{
03 cutBukanCopy = true;
04 kotak_mc._alpha = 30;
05 isiDinamikTeks = "sekarang klik kanan di sembarang tempat\nuntuk memindahkan objek";
06}
07 
08function salin()
09{
10 cutBukanCopy = false;
11 isiDinamikTeks = "sekarang klik kanan di sembarang tempat\nuntuk membuat objek baru";
12}
13 
14function tempel()
15{
16 if(isiDinamikTeks == "silakan klik kanan di kotak")
17 {
18    isiDinamikTeks = "woooiii... belum diapa-apain itu..\nklik cut atau copy dulu baru klik paste disini";
19 }
20 else if(cutBukanCopy)
21 {
22    setProperty(kotak_mc, _x, _xmouse);
23    setProperty(kotak_mc, _y, _ymouse);
24    kotak_mc._alpha = 100;
25    isiDinamikTeks = "silakan klik kanan di kotak";
26 }
27 else
28 {
29    duplicateMovieClip(kotak_mc, "kotak"+i+"_mc", i);
30    setProperty("kotak"+i+"_mc", _x, _xmouse);
31    setProperty("kotak"+i+"_mc", _y, _ymouse);
32    i++;
33 }
34}
35 
36var listMenuKotak:ContextMenu = new ContextMenu();
37var listMenuRoot:ContextMenu = new ContextMenu();
38var cutMenu:ContextMenuItem = new ContextMenuItem("cut kotak", potong);
39var copyMenu:ContextMenuItem = new ContextMenuItem("copy kotak", salin);
40var pasteMenu:ContextMenuItem = new ContextMenuItem("paste kotak", tempel);
41var i:Number = new Number(1);
42var cutBukanCopy:Boolean = new Boolean();
43var isiDinamikTeks:String = new String("silakan klik kanan di kotak");
44 
45listMenuKotak.hideBuiltInItems();
46listMenuKotak.customItems = [cutMenu,copyMenu];
47 
48listMenuRoot.hideBuiltInItems();
49listMenuRoot.customItems = [pasteMenu];
50 
51kotak_mc.menu = listMenuKotak;
52_root.menu = listMenuRoot;
Kalau mau lihat file jadinya, silakan unduh contohnya di http://www.box.net/shared/5bkdzxckcc [size 8KB]
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?
:D 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 :P ).
Nah, untuk mendeteksi klik kanan, kita bisa menggunakan fungsi ASnative(800,2)(2). Contoh sederhananya seperti ini:
1onEnterFrame = function()
2{
3 if(ASnative(800,2)(2))
4 {
5    trace("klik kanan terdeteksi");
6 }
7}

Tidak ada komentar:

Posting Komentar