Modul
MACROMEDIA FLASH MX II
OLEH : ROBY SUSANTO
PSPTEI.Corp PUSAT STUDI PENGEMBANGAN TEKNOLOGI ELEKTRONIKA DAN INFORMASI TEKNIK ELEKTRO UNIVERSITAS MERDEKA MALANG
Alamat
:
Telp e-mail Home Page
: :
Gegung Fakultas Teknik Elektro – Arsitektur Lantai Dasar Universitas Merdeka Malang (0341) 568395 - 652 - *82 / 0819 7700 1197
[email protected]
:
www.kocenk.net
MALANG 2005
PENDAHULUAN Seiring dengan perkembangannya e-mail bukan lagi merupakan sebuah tren yang dapat dibanggakan. Akan tetapi kini gensi itu sudah bergeser. Mencantumkan alamat situs pribadi di kartu nama adalah kebanggaan baru. Sebelum memasuki materi Flash lanjutan ada baiknya kita mengulang materi yang telah lalu. Saya akan mengigatkan bahwa flash mampu mengerjakan apapun karena flash merupakan software yang portable. Dahulu kita membahas flash sebagai design web sekaligus web design dan bagaimana cara meng up-load homepage yang telah kita hasilkan agar dapat dilihat dan di kunjungi oleh orang lain guna kepentingan tertentu. Kita akan mereview beberapa pertanyaan dasar mengapa kita perlu merancang / membuat homepage yang tentunya anda sendiri yang dapat menjawabnya. Penulis percaya bila anda mampu menjawab beberapa pertanyaan ini anda merupakan seorang homepage yang baik. 1. untuk apa mempunyai homepage sendiri? 2. mengapa anda ingin membuat homepage? 3. siapa yang anda harapkan tertarik dengan homepage anda? 4. tipe homepage bagaimana yang anda inginkan? 5. mengenai apa isi homepage anda? 6. seperti apa tampilan homepage yang anda inginkan? 7. dimana anda ingin memasang homepage anda? Semua pertanyaan tersebut dapat menuntun anda menjadi seorang web master. Untuk kali ini kita akan membahas sebuah design menggunakan lebih banyak action scrip sehingga aplikasi yang dihasilkan lebih pariatif dan interactive.
PENGEMBANGAN ANIMASI MENGGUNAKAN ACTION SCRIP Complex preloader Preloader merupakan sebuah loder yang sangat berguna dalam sebuah permainan flash karena dengan menggunakan loader tersebut pengunjung / user tidak akan merasa bosan dan beranjak dari flash yang telah kita buat. Langkah membuat preloader. • Buat sebuah permainan dalam library (movie clip) yang menggunakan 3 layer • Buat tulisan LOADING pada layer 1 • Buat bar outline / kotak (bingkai loader) pada layer 2 • Buat bar movie clip pada layer 3 • Sekarang kembali ke scane • Buatlah 3 layer pada scane dimana layer 1 diberi nama loader, layer 2 dengan nama movie utama, layer 3 dengan nama action. • Pada layer 3 di frame 1 dan 2 isikan action “stop” • Pada layer 2 di frame 1 di kosongkan dan pada frame 2 di isi dengan apa yang akan di tampilkan • Pada layer 1 di frame 1 masukkan preloader yang telah kita buat dalam library, berikan intruksi pada action scrip sebagai berikut onClipEvent (enterFrame) { loadedbytes=_root.getBytesLoaded(); totalbytes=_root.getBytesTotal(); if (loadedbytes>=totalbytes) { _root.gotoAndPlay (2); } else { frame=Math.floor(loadedbytes/totalbytes*50); this.gotoAndStop(frame); } } • Cobalah lihat apa yang telah di hasilkan Teks berputar Cara membuat • Buatlah text terserah anda misalnya percobaan 1 • Setelah itu jadikan text tersebut movie clip • Masukkan baris instruksi berikut onClipEvent (load) { perubahan=5; } onClipEvent (enterFrame) { this._rotation=this._rotation+perubahan; } • Cobalah
draggable mask cara membuat : • buatlah 2 layer pada layer 1 beri nama masked dan layer 2 mask • pada layer 1 buatlah / masukkan gambar yang berupa movie clip sehingga tersimpan dalam library • pada layer 2 buatlah lingkaran atau sesuai selera jadikan movie clip agar tersimpan pada library • layer 2 pada movie clip tersebut masukkan baris intruksi berikut onClipEvent(load) { _root.myMasked.setMask(_root.myMask); } onClipEvent(mouseMove) { startDrag(_root.myMask, true) } • cobalah (pada label masukkan tulisan myMask dan myMasked) trails cara membuat: • buat library sebuah movie clip • keluarkan library tersebut menjadi 3 frame • pada frame 1 isikan perintah ini pada stage startDrag(trail1, true); • pada frame 2 isikan perintah ini pada stage copy = copy+1; if (copy>10) { copy = 1; } duplicateMovieClip("trail1", "trail"+copy, copy); • pada frame 3 isikan perintah ini pada stage gotoAndPlay(2); • selamat mencoba Mengubah property relative • Buat movie clip dengan nama “terserah” • Letakkan movie clip tersebut pada scane layer 1 dan frame 1 • Masukkan baris intruksi berikut pada movie clip (Action) onClipEvent (mouseMove) { _root.bulat._xscale = (_root._xmouse/550)*100; _root.bulat._yscale = (_root._ymouse/400)*100; updateAfterEvent(); } • Pada kolom properties isikan instant name dengan nama “terserah” • Cobalah hasil karya anda
Mouse Tracker 2 var02 • Ambil / import gambar dari file ubah menjadi movie clip • Buat movie clip kosong beri nama “terserah” • Letakkan movie clip “terserah” pada scane layer 1 frame 1 • Masih pada layer 1 buatlah untuk tampilan text dengan format dynamic text dan pada kolom variable isikan “position” • Bila sudah isikan perintah pada movie clip terserah sebagai berikut: onClipEvent (mouseMove) { _root.Xposition = _root._xmouse; _root.Yposition = _root._ymouse; // Kode berikut akan men-merubah alpha // tergantung pada lokasi kursor terhadap ukuran movie stage _root.mbah._alpha=(_root._xmouse / 550) * 100; updateAfterEvent(); • •
} Buat layer baru / layer 2 masukkan gambar yang telah di import dalam library ke layer 2 pada instant name isikan nama movie clip Cobalah jalankan….?!!!
Drag • Buat sebuah object menggunakan movie clip misalnya kotak • Buat tombol dengan mengcopy object tersebut buat ukurannya lebih besar dari ukuran semula dan letakkan pada posisi HIT • Buat layer baru pada movie clip yang telah kita buat dan letakkan tombol tersebut • Berikan perintah pada tombol tersebut / letaknya pada layer 2 diatas on (press) { startDrag(this); } on (release) { stopDrag(); } • Coba lihat hasil anda Drop Target Drop target merupakan sebuah tambahan action scrip dari Drag sehingga kita hanya perlu menambahkan gambar movie clip tong sampah pada scane layer 1 frame 1. dan menambahkan action scrip seperti berikut ini: on (press) { startDrag(this); } on (release) { stopDrag();
if (this._droptarget=="/tongsampah") { this._visible=0; } else { setProperty(this, _x, 400); setProperty(this, _y, 100); } } Selamat mencoba ^_^!!!? Tugas buatlah puzel menggunakan teknik Drag dengan action scrip sebagai berikut on (press) { startDrag (this); this.swapDepths( 2 ); } on (release) { stopDrag (); } Amati dan berikomentar Custom cursor • Buat movie clip yang ujungnya lancip / tajam • Letakkan pada scane layer 1 • Masukkan baris intruksi berikut ini…. onClipEvent (load) { Mouse.hide(); } onClipEvent (mouseMove) { _root.rocket._x = _root._xmouse; _root.rocket._y = _root._ymouse; updateAfterEvent(); } • Jalankan Area cursor Ini hanya melanjutkan dari custom cursor, coba tambahkan layer pada scane letakkan di bawah buat seperti contoh berikut: pada cursor masukkan action scrip berikut ini :
onClipEvent (load) { Mouse.hide(); } onClipEvent (mouseMove) { Mouse.hide(); _root.rocket._x = _root._xmouse; _root.rocket._y = _root._ymouse; if ((_root._ymouse>0 && _root._ymouse<50) && (_root._xmouse>0 && _root._xmouse<550)) { _root.rocket._xscale = 50; _root.rocket._yscale = 50; _root.rocket._rotation = 0; _root.rocket._alpha = 100; } else if ((_root._ymouse>50 && _root._ymouse<350) && (_root._xmouse>400 && _root._xmouse<550)) { _root.rocket._xscale = 100; _root.rocket._yscale = 100; _root.rocket._rotation = 0; _root.rocket._alpha = 50; } else if ((_root._ymouse>350 && _root._ymouse<400) && (_root._xmouse>0 && _root._xmouse<550)) { _root.rocket._xscale = 100; _root.rocket._yscale = 100; _root.rocket._rotation = 225; _root.rocket._alpha = 100; } else { _root.rocket._xscale = 100; _root.rocket._yscale = 100; _root.rocket._rotation = 0; _root.rocket._alpha = 100; } updateAfterEvent(); } Permainan warna • Buat leyer sebanyak 5 dengan nama “warna, outline, button, test, action” • Buat outline menggunakan movie clip • Buat movie clip untuk warna menggunakan outline • Buat tombol dan letakkan pada layer button sebanyak 3 buah • Bila sudah pada layer dengan nama action masukkan action scrip berikut warnasofa = new Color(sofa); //menggunakan variable • Pada buton 1 berikan action scrip berikut on (rollOver) {
_root.warnasofa.setRGB(0xFF0000); •
•
• •
} Pada buton 2 berikan action scrip berikut on (rollOver) { _root.warnasofa.setRGB( 0x00FF00 ); } Pada buton 1 berikan action scrip berikut on (rollOver) { _root.warnasofa.setRGB( 0xFFFF00 ); } Pada layer dengan nama warna lihat properties dan isikan instant name “sofa” Coba jalankan…?!!!!
Copy / stamp Pada dasarnya teknik ini serupa dengan drag • Buat lingkaran dengan tulisan di tengahnya jadikan movie clip • Pada movie clip ini buat layer baru dengan membuat tombol pada posisi HIT • Masukkan baris instruksi berikut ini on (press) { duplicateMovieClip(this,"stempel"+_root.jumlah,_root.jumlah); _root.jumlah++; startDrag(this); } on (release) { stopDrag(); } • Pada scane, frame 1 isikan action scrip berikut jumlah = 1; • Coba amati dan komentarin Rotation ball secara Acak Lngkah pembuatan: Buka library Buat movie clip beberapa bola “bulat” dengan menggunakan warna berbeda Buat layer baru pada frame 1 berikan instruksi stop Kali ini buat movie clip baru (dalam library) Ambil movie clip “bulat” dari library Gunakan create motion tween. Pada frame 40 insert keyframe Klik kanan layer1 gunakan add motioan guide Buat lingkaran dan susunlah “bulat” sehingga dapat berputar mengikuti lingkaran Pada “bulat” frame1 instant name pada properties isikan dengan nama “warna” Keluarkan movie clip yang baru anda buat letakkan pada scane Masukkan baris intruksi berikut ini onClipEvent (load) { startframe=random(29)+1; randomscale=random(80)+20;
this._xscale=randomscale; this._yscale=randomscale; this.gotoAndPlay(startframe); } Pada instant name berikan nama putar Buat layer baru masukkan baris intruksi berikut ini for (i=0; i<40; i++) { duplicateMovieClip(_root.ballbase, "bulat"+i, i); _root["bulat"+i]._x=200+random(100); _root["bulat"+i]._y=random(200)+100; } _root.putar._visible=0; warna = new Color (); stop(); Kembali pada layer1 buat tombol dan letakkan intruksi berikut on (release) { for (i=0; i<40; i++) { randomwarna = random(15)+1; _root["bulat"+i].warna.gotoAndPlay(randomwarna); } } Selamat mencoba Replay Object Buat movie clip “bulat” dalam library Tambahkan layer buat tombol pada layer tersebut dengan posisi HIT Berikan instruksi berikut pada object on (press) { startDrag(this); } on (release) { stopDrag(); } Keluarkan dan berikan insteruksi berikut onClipEvent (load) { captureX=new Array(); captureY=new Array(); } onClipEvent(mouseDown) { captureX.length=0; captureY.length=0; mode="record"; } onClipEvent(mouseUp) { mode="play"; counter=0;
} onClipEvent(enterFrame) { if (mode=="record") { captureX.push(this._x); captureY.push(this._y); } if (mode=="play") { this._x=captureX[counter]; this._y=captureY[counter]; counter=counter+1; } updateAfterEvent(); } Selamat mencoba etch jangan lupa instant name diisi ^_^!!!? Konversi suhu Buat 2 buah layer Pada layer1 isi tombol dan 2 text text 1 = celcius dan text 2 = Fahrenheit Pada layer 2 buat 2 buah text dengan input text masing-masing var di isi Pada tombol isikan baris intruksi berikut on (release) { fahrenheit=9/5*celcius+32; } Pada layer 2 isikan instruksi berikut celcius=""; fahrenheit=""; stop(); Selamat mencoba Membuat password Buat layer secukupnya untuk text, tombol, action, input text, dan dynamic text, juga hal Pada layer text buat tulisan masukkan nama anda dan password disini , login Pada layer tombol letakkan tombol dan berikan instruksi berikut on (release) { if (password == "abcd") { nextFrame(); } else { warning = "Hi, "+nama+" password Anda salah, silakan ulangi lagi"; } } Pada layer action berikan instruksi stop baik frame1 maupun frame2 Pada input text var isikan dengan nama / posisi sigle begitu juga password
Pada layer dynamic. Var isi “warning” Selamat mencoba analisa dan cari kelemahannya. Kalkulator Buat 3 layer dengan nama action, display, tombol Pada layer action masukkan baris intruksi berikut ini Pada layer tombol buat layout untuk kalkulator dan letakkan tombol Pada layer display isikan dengan text berbasis dynamic text dengan var display Kembali pada tombol akan di bahas fungsi tombol kalkulator yaitu: Pada tombol C digunakan sebagai reset. Instruksinya adalah on (release) { display=""; operation="no"; } Pada tombol + digunakan untuk penjumlahan instruksinya adalah on (release) { if (operation=="no") { display=display+"+"; operation="tambah"; } } Pada tombol / digunakan untuk penjumlahan instruksinya adalah on (release) { if (operation=="no") { display=display+"/"; operation="bagi"; } } Pada tombol X digunakan untuk penjumlahan instruksinya adalah on (release) { if (operation=="no") { display=display+"*"; operation="kali"; } } Pada tombol (-) digunakan untuk penjumlahan instruksinya adalah on (release) { if (operation=="no") { display=display+"-"; operation="kurang"; } } Pada tombol (. )digunakan untuk penjumlahan instruksinya adalah on (release) { display=display+"."; }
Pada tombol angka digunakan untuk penomoran instruksinya adalah on (release) { display=display+"0 s/d 9"; } Pada tombol (=) digunakan untuk melihat hasil instruksinya adalah on (release) { if (operation=="tambah") { myArray=display.split("+"); number1=Number(myArray[0]); number2=Number(myArray[1]); total=number1+number2; display=total; operation="no"; } if (operation=="kurang") { myArray=display.split("-"); number1=Number(myArray[0]); number2=Number(myArray[1]); total=number1-number2; display=total; operation="no"; } if (operation=="kali") { myArray=display.split("*"); number1=Number(myArray[0]); number2=Number(myArray[1]); total=number1*number2; display=total; operation="no"; } if (operation=="bagi") { myArray=display.split("/"); number1=Number(myArray[0]); number2=Number(myArray[1]); total=number1/number2; display=total; operation="no"; } } Selamat mencoba ^_^!!!? Memunculkan Hari dan Tanggal Buat 3 layer. Action, keterangan, display Pada display buat movie clip dynamic text dan letakkan instruksi berikut ini onClipEvent (load) {
myDate = new Date (); tanggal = myDate.getDate(); hari = myDate.getDay(); bulan = myDate.getMonth (); tahun = myDate.getFullYear (); display = _root.namahari[hari]+", "+tanggal+" "+_root.namabulan[bulan] +" "+tahun; } Pada layer keterangan tulis “hari dan tanggal pada hari ini adalah” Pada action berikan instruksi berikut ini namahari = new Array(); namahari[0] = "Minggu"; namahari[1] = "Senin"; namahari[2] = "Selasa"; namahari[3] = "Rabu"; namahari[4] = "Kamis"; namahari[5] = "Jumat"; namahari[6] = "Sabtu"; namabulan = new Array(); namabulan[0] = "Januari"; namabulan[1] = "Februari"; namabulan[2] = "Maret"; namabulan[3] = "April"; namabulan[4] = "Mei"; namabulan[5] = "Juni"; namabulan[6] = "Juli"; namabulan[7] = "Agustus"; namabulan[8] = "September"; namabulan[9] = "Oktober"; namabulan[10] = "November"; namabulan[11] = "Desember"; Selamat mencoba Memunculkan Waktu Caranya sama hanya lebih sederhana yaitu Buat movie clip letakkan di scane beri instruksi berikut onClipEvent (enterFrame) { myTime = new Date (); jam = myTime.getHours (); menit = myTime.getMinutes (); detik = myTime.getSeconds (); if (jam>12) { jam=jam-12; } else if (jam==0) { jam=12; }
if (menit<10) { menit="0"+menit; } if (detik<10) { detik="0"+detik; } waktu=jam+" : "+menit+" : "+detik; } Selamat mencoba Membuat dynamic Text Buat 2 layer dengan layer1 “dynamic dan layer2 “action” Pada layer dynamic buat 2 buah text yaitu text static dan text dynamic var isikan displayNews Pada layer action isikan instruksi berikut ini: loadVariables("kocenk.txt", _root.displayNews); Buat notepad dengan awalan text displayNews= isinya Selamat mencoba ^_^!!!? Efek Jarak Buat 2 layer dengan nama grid dan karakter Pada grid buat gambar garis seperti susunan lantai keramik dan jadikan movie clip Pada karakter buat movie clip di symbol Buat 2 layer layer1 graphic “isi instant name” layer2 button pada button buat dalam posisi HIT beikan instruksi berikut on (press) { startDrag(this,false,left,top,right,bottom); } on (release) { stopDrag(); } Kembali pada scane Klik pada karakter berikan instruksi berikut onClipEvent(load) { myBounds = _root.grid.getBounds(_root); top=myBounds.yMin; bottom=myBounds.yMax left=myBounds.xMin; right=myBounds.xMax; maxZ=bottom; minZ=top-50; } onClipEvent(mouseMove){ newScale=(100/(maxZ-minZ))*(this._y-minZ); this._xscale=newScale; this._yscale=newScale;
} Selamat mencoba dech Efek suara Load /unload suara Buat musik jadikan file SWF Buat file baru buat 2 buah tombol pada tombol satu isiskan play musix berikan instruksi berikut on (release) { loadMovieNum("kocenk.swf", 1); } pada tombol dua isikan unload musix berikan instruksi berikut on (release) { unloadMovieNum(1); } coba sapa tau gagal ^_^!!!? Pengontrol suara buat 5 layer,action, sound, text, button, wav pada frame action masukkan instruksi ini s = new Sound(_root.musik); pada sound buat library dengan nama sound didalam library sound buat 3 layer, action, frame label, musix pada layer action masukkan instruksi ini s = new Sound(_root.musik); pada layer frame label buat label stop pada frame 1 s/d 20 dapa 21 s/d 40 label play pada layer musix frame 40 masukkan musix kembali ke scane pada layer tombol buat beberapa tombol diantaranya tombol start, stop, dan beberapa tombol untuk volume, dan tombol centre, beberapa tombol right, dan left pada tombol start isikan instruksi berikut: on (release) { musik.gotoAndStop("Play"); wave.gotoAndPlay("Play"); } pada tombol stop isikan instruksi berikut on (release) { musik.gotoAndStop("Stop"); wave.gotoAndStop("Stop"); stopAllSounds(); } pada centre isikan on (rollOver) { s.setPan(0);
} pada volume musix untuk suara besar on (rollOver) { s.setVolume(100); } pada volume musix suara kecil on (rollOver) { s.setVolume(0); } pada left / right on (rollOver) { s.setPan(-100 / 100); } selamat mencoba Metode Manipulasi Musik • Import suara dalam library • Pada layer prame 1 isikan instruksi berikut mySound = new Sound (); mySound.attachSound("musik"); mySound.start(0,999); • kembali pada suara yang terdapat dalam library perhatikan pada baris intruksi mySound.attachSound("musik"); yang artinya linkage berisi musik nach sekarang cobalah linkage tersebut isi dengan kata musik • jalankan “semoga berhasil” slider / tuning Volume • Buat layer sebanyak 4 buah ; action, sound, drag, batasan • Pada action isikan instruksi berikut s = new Sound(_root.musik); • pada sound buat library dengan 2 layer pada layer 1 berisi action dengan instruksi “stop”, pada layer 2 berisi suara letakkan pada scan layer sound • pada drag buatlah library tombol,buat movieklip masukkan tombol tersebut pada movieclip yang baru anda buat dan masukkan baris instruksi berikut ini on (press) { startDrag(this, false, left, top, right, bottom); dragging = true; } on (release, releaseOutside) { stopDrag(); dragging = false; • keluarkan movieklip baru anda ke scan dan berikan baris instruksi berikut onClipEvent (load) { top=_y; left=_x; right=_x+250;
bottom=_y; }
• •
onClipEvent(enterFrame){ if (dragging==true){ _root.s.setVolume((right-_x)/2.5); } } pada batasan buatlah garis sebagai landasan volume ingat pada instant name , jalankan selamat mengkoreksi
Game Flash Dasar Perpindahan Object Buat object / gambar misalkan jadikan movieclip berikan instruksi berikut ini: onClipEvent (enterFrame) { if (Key.isDown(Key.UP) && Key.isDown(Key.RIGHT)) { this._rotation = 45; this._y = _y-15; this._x = _x+15; } else if (Key.isDown(Key.RIGHT) && Key.isDown(Key.DOWN)) { this._rotation = 135; this._y = _y+15; this._x = _x+15; } else if (Key.isDown(Key.LEFT) && Key.isDown(Key.DOWN)) { this._rotation = 225; this._y = _y+15; this._x = _x-15; } else if (Key.isDown(Key.UP) && Key.isDown(Key.LEFT)) { this._rotation = 315; this._y = _y-15; this._x = _x-15; } else if (Key.isDown(Key.UP)) { this._rotation = 0; this._y = _y-30; } else if (Key.isDown(Key.DOWN)) { this._rotation = 180; this._y = _y+30; } else if (Key.isDown(Key.RIGHT)) { this._rotation = 90; this._x = _x+30; } else if (Key.isDown(Key.LEFT)) { this._rotation = -90; this._x = _x-30; } } Cobalah….
Effect Tumbukan • Buatlah movieclip dengan 3 layer : action, tombol, object. Pada action isi scrip “stop” Pada tombol buat object letakkan pada posisi HIT berikan instruksi berikut on (press) { startDrag(this); } on (release) { stopDrag(); } Pada object buat gambar yang serupa dengan posisi hit tombol di frame 1 pada frame 2 bikin gambar seperti ledakan • Keluarkan movieclip yang baru anda buat dan berikan baris instruksi berikut ini onClipEvent (enterFrame) { if (this.hitTest(_root.asteroid) == true) { this.gotoAndPlay(2); } } • Buat layer baru letakkan di bawah “buat object bergerak dari kiri ke kanan” dan pada instant name di isi >>>> asteroid • Selamat mencoba Game Over • Buat 3 layer : action, display, object • Pada layer action berisi “Stop” • Pada display buat movie clip dengan jenis text Dynamic. var waktu • Keluarkan pada scan berikan instruksi onClipEvent(enterFrame) { currentTime=getTimer(); waktu=Math.round(10-(currentTime/1000)) if (waktu<=0) { _root.gotoAndStop(3); } } • Coba Display Perang Game • Buat 3 layer; border, pesawat, begron • Pada border buat movie clip garis batasan • Pada pesawat buat object pesawat berikan instruksi onClipEvent (load) { speed = 10; _root.laser._visible=0; jumlahlaser=1; }
• • •
•
onClipEvent (enterFrame) { if (Key.isDown(Key.RIGHT)) { this._x=_x+speed; } else if (Key.isDown(Key.LEFT)) { this._x=_x-speed; } if (this._x<=50) { this._x=50; } else if (this._x>=600) { this._x=600; } if (Key.isDown(Key.CONTROL)) { if (jumlahlaser==1) { duplicateMovieClip (_root.laser, "laser"+jumlahlaser, jumlahlaser); jumlahlaser=0; } } } Pada begron masukkan begron yang sesuai Coba jalankan koreksi oiya ada yang lupa Pada pesawat buat movieclip dengan nama laser masukkan garis bentuk seperti misil berikan instruksi onClipEvent (load) { laserspeed=10; this._x=_root.pesawat._x; this._y=_root.pesawat._y-30; } onClipEvent (enterFrame) { this._y=this._y-laserspeed; if (this.hitTest(_root.upperBorder)) { _root.pesawat.jumlahlaser=1; removeMovieClip (this); } } Nach sekarang baru di coba ^_^!!!?
Percobaan diatas blom ada musuhnya sekarang akan membuat musuh nich..?!!! • Buat 7 layer : begron,pesawat,upborder,bottomborder,musuh,gameover,action. • Pada action masukkan baris instruksi berikut startX=new Array (100,150,200,250,300,350,400,450,500,550,100,150,200,250,300,350,400,450, 500,550);
startY=new Array (100,100,100,100,100,100,100,100,100,100,150,150,150,150,150,150,150,150, 150,150) for (i=0;i<20;i++) { duplicateMovieClip(enemy, "enemy"+i, i+10); _root["enemy"+i]._x=startX[i] _root["enemy"+i]._y=startY[i] } _root.enemy._visible=0; score=0; enemyBlown=0; suara1=new Sound(); suara1.attachSound("loop"); suara1.start(0,999); suara1.setVolume(50);
• •
suara2=new Sound(); suara2.attachSound("shot"); suara3=new Sound(); suara3.attachSound("explode"); stop(); stop(); Pada musuh buat movieclip bergerak dengan nama “musuh” Buat lagi movieclip ambil musuh dalam library buat bergeser dari kiri ke kanan ke kiri lagi 2 kalinya lalu kembali ke posisi semula bila sudah letakkan pada layer musuh.dan berikan instruksi berikut ini: onClipEvent (load) { enemySpeed=20; delay=5; startTimer=0; } onClipEvent (enterFrame) { currentTimer=Math.round(getTimer()/1000); if (currentTimer-startTimer==delay) { this._y=this._y+enemySpeed; startTimer=currentTimer; } if (this.hitTest(_root.laser1)) { _root.attachMovie("ledakan", "ledakan1", 5); _root.ledakan1._x=_root.laser1._x; _root.ledakan1._y=_root.laser1._y-20; _root.pesawat.jumlahlaser=1; removeMovieClip(this); removeMovieClip(_root.laser1); } if (this.hitTest(_root.pesawat)) {
_root.attachMovie("ledakanCopy", "ledakanCopy1", 6); _root.ledakanCopy1._x=_root.pesawat._x; _root.ledakanCopy1._y=_root.pesawat._y; _root.ledakanCopy1._xscale=150; _root.ledakanCopy1._yscale=150; removeMovieClip(this); removeMovieClip(_root.pesawat); } if (this.hitTest(_root.bottomBorder)) { _root.attachMovie("ledakanCopy", "ledakanCopy1", 7); _root.ledakanCopy1._x=this._x; _root.ledakanCopy1._y=this._y; _root.ledakanCopy1._xscale=150; _root.ledakanCopy1._yscale=150; removeMovieClip(this); } • • •
•
} Pada buttonBorder buat movie clip berupa garis letakkan di bawah scan Pada upborder lakukan hal yang sama letakkan di atas ingat border sebagai batas Pada pesawat sama seperti contoh di atas isikan instruksi berikut: onClipEvent (load) { speed = 10; _root.laser._visible=0; jumlahlaser=1; } onClipEvent (enterFrame) { if (Key.isDown(Key.RIGHT)) { this._x=_x+speed; } else if (Key.isDown(Key.LEFT)) { this._x=_x-speed; } if (this._x<=50) { this._x=50; } else if (this._x>=600) { this._x=600; } if (Key.isDown(Key.CONTROL)) { if (jumlahlaser==1) { duplicateMovieClip (_root.laser, "laser"+jumlahlaser, jumlahlaser); jumlahlaser=0; } } } Begitu juga dengan lasernya instruksinya sebagai berikut
• •
onClipEvent (load) { laserspeed=10; this._x=_root.pesawat._x; this._y=_root.pesawat._y-30; } onClipEvent (enterFrame) { this._y=this._y-laserspeed; if (this.hitTest(_root.upperBorder)) { _root.pesawat.jumlahlaser=1; removeMovieClip (this); } } Begron juga sama sich ^_^!!!? Yang belum di bahas apa yach oiya layer “Game Over. Nach pada layer ini buat di frame2 tulisan Game Over Selesai dech di coba dan analisa
Final Game Kali ini hanya mempercantik game yaitu hanya menambah nilai score dan suara • Buat 8 layer; win, Game Over, Score, Musuh, Bottomborder, upborder, pesawat, background • Pada Game Over sama seperti di atas • Pada score buat text dynamic dengan var score letakkan pada frame 1 dan 2 atur posisinya • Pada layer musuh sama var enemy dengan action scrip: onClipEvent (load) { enemySpeed=20; delay=5; startTimer=0; } onClipEvent (enterFrame) { currentTimer=Math.round(getTimer()/1000); if (currentTimer-startTimer==delay) { this._y=this._y+enemySpeed; startTimer=currentTimer; } if (this.hitTest(_root.laser1)) { _root.suara3.start(0,1); _root.score=_root.score+100; _root.enemyBlown=_root.enemyBlown+1; _root.attachMovie("ledakan", "ledakan1", 5); _root.ledakan1._x=_root.laser1._x; _root.ledakan1._y=_root.laser1._y-20; _root.pesawat.jumlahlaser=1; removeMovieClip(this); removeMovieClip(_root.laser1); }
if (this.hitTest(_root.pesawat)) { _root.suara3.start(0,1); _root.attachMovie("ledakanCopy", "ledakanCopy1", 6); _root.ledakanCopy1._x=_root.pesawat._x; _root.ledakanCopy1._y=_root.pesawat._y; _root.ledakanCopy1._xscale=150; _root.ledakanCopy1._yscale=150; removeMovieClip(this); removeMovieClip(_root.pesawat); } if (this.hitTest(_root.bottomBorder)) { _root.suara3.start(0,1); _root.attachMovie("ledakanCopy", "ledakanCopy1", 7); _root.ledakanCopy1._x=this._x; _root.ledakanCopy1._y=this._y; _root.ledakanCopy1._xscale=150; _root.ledakanCopy1._yscale=150; removeMovieClip(this); } if (enemyBlown>=20) { _root.gotoAndStop(3) } • •
} Pada button dan upborder sama Pada pesawat juga sama dengan action onClipEvent (load) { speed = 10; _root.laser._visible=0; jumlahlaser=1; } onClipEvent (enterFrame) { if (Key.isDown(Key.RIGHT)) { this._x=_x+speed; } else if (Key.isDown(Key.LEFT)) { this._x=_x-speed; } if (this._x<=50) { this._x=50; } else if (this._x>=600) { this._x=600; } if (Key.isDown(Key.CONTROL)) { _root.suara2.start(0,1); if (jumlahlaser==1) {
duplicateMovieClip
(_root.laser,
"laser"+jumlahlaser,
jumlahlaser); jumlahlaser=0; } } •
• • • •
} Begitu juga laser onClipEvent (load) { laserspeed=10; this._x=_root.pesawat._x; this._y=_root.pesawat._y-30; } onClipEvent (enterFrame) { this._y=this._y-laserspeed; if (this.hitTest(_root.upperBorder)) { _root.pesawat.jumlahlaser=1; removeMovieClip (this); } } Lalu pada layer win buat static text “YOU WIN” Nach apa yang kurang coba jalankan dan amati… Cobalah buat library dengan mana explosion bikin effect ledakan jangan lupa linkage di isi lalu gandakan movieclip ini dengan nama explosion copy Masukkan 3 suara yaitu untuk main, tembak, dan ledakan pastikan yang anda buat kali ini berjalan dengan sempurna…