Anda di halaman 1dari 11

BAB2

DASAR DASAR PROGRAMACTIONSCRIPT 3.0

Dalambabiniakandibahasmengenai Babinidimulaidenganpenjelasanmengenaikonsepkonsepdasarpemrogramanbesertadengancontoh pengkodeannyadalamActionScript.Supayalangsungbisamelihathasilpengkodeananda,buatprojectbarudalam FlashDevelopandadenganmemilihmenuProjectNewProject,pilihtemplateAS3Project,berinamaproject andaDasarAS3.Masukpadadirektorisrc,doubleclickfileMain.as,yangakanmemunculkanpackageberikut. package { } importflash.display.Sprite; importflash.events.Event; /** *... *@authorNugrohoAgusH */ publicclassMainextendsSprite { } publicfunctionMain():void { } privatefunctioninit(e:Event=null):void { } removeEventListener(Event.ADDED_TO_STAGE,init); //entrypoint if(stage)init(); elseaddEventListener(Event.ADDED_TO_STAGE,init);

1.

Pemberiankomentar.Komentaradalahpotonganpotonganteksyangtidakikutdijalankan//dieksekusioleh program.Komentarhanyadigunakanuntukdokumentasiprogramsehinggabisadigunakandalam pendeteksiankesalahanmaupunpengembanganprogram.DalamActionScriptterdapatduatipekomentar, yaitu:komentardalamsatubarisdankomentardalamsatublokbaris. 1.1. Untukmemberikankomentarhanyadalamsatubarisdigunakantandaduaforwardslash(//),misalnya: Trace(HelloWorld)//komentarnyaadalahuntukmenampilkantulisanHelloWorld. 1.2. Untukmemberikankomentardalambeberapabarisdiawalidengantanda/*dandiakhiridengantanda */,misalnya: /* copyrightbynugroho F.TeknologiInformasi UKDW */

2.

PenggunaanperintahTrace PerintahTracedigunakanuntukmenampilkaninformasipadapanelOutput.PanelOutputhanyadigunakan untukmengujijalannyaprogramsaja,bukansebagaitampilanutamaprogram.Yangmenjaditampilanutama programadalahStagekita. Misalnya: publicfunctionMain():void{ if(stage)init(); elseaddEventListener(Event.ADDED_TO_STAGE,init); trace(2+5)//akanmenampilkanbilangan7 }

3.

PendeklarasianVariabel Sebuahvariabel(misalnyavariabelxdalampelajaranmatematikayangmenyajikansebuahbilanganyangbisa diberidengansuatunilai)adalahsebuahpenampunginformasiyangbisadiambilataupundiganti.Variabel variabelyangakandigunakandalamActionScriptharusdideklarasikanterlebihdahulu.Beberapatipe data/tipevariabelyangseringdigunakanantaralain:TextField,Number,String,Array,Sprite,Shape,dan MovieClip.KitajugadapatmembuattipevariabelsendiriberupaobjekClassuntukaplikasikita.Perintah deklarasivariabelmempunyaibentukumum:


var namaVariabel:TipeVariabel;

ataucarakeduaberikutjugamemberikanhasilyangsama:
var namaVariabel:TipeVariabel=new TipeVariabel();

AndabisamenambahkanprogramberikutkedalamkodeprogramandadidalamlingkupfungsiMain()untuk memunculkantulisanHelloWorldkedalamStageAnda. publicfunctionMain():void{


var textSaya:TextField=new TextField(); textSaya.text="Hello World"; stage.addChild(textSaya);

LanjutkandenganmengujihasilprogramandadenganmenekanF5atauCtrl+Enter,makaandaakanmelihat tulisanHelloWorldpadaujungkiriatasStageanda.

Lakukanhalserupauntukcontohcontohselanjutnya,yaitutambahkankodeyanginginandajalankandi dalamlingkupfungsipublicMain().LanjutkandenganmengujiprogramandadenganmenekanF5. Namavariabelharusmemenuhiaturanaturanberikut: Hanyaterdiridarihuruf,angka,karkatergarisbawah,dansimbol$. Tidakdiawalidenganangka TidaksamadengankatakhususyangsudahdipakaiolehActionScript(reservedword),sepertivar,Sprite, danlainlain. Harusunik

Untukpenulisandalampenamaanvariabel,andadapatmenggunakanmodeKataKapital(CamelCase)yang merupakanprosespenulisanbeberapakatatanpatandaspasinamundenganmengkapitalisasi(menulis denganhurufbesar)setiapkatapembentuknya,misalnyatextSaya,radiusBola,dantinggiAwalStage.Untuk tipedatakompleks(movieClip,button,textField)yangadadalamstageyangdibuatdenganAdobeFlashCS3 Profesional,andadapatmendeklarasikannyadenganmenuliskannyapadanamainstan(instancename)pada bagianpropertiobjeknya.FlashCS3akanmembuatvariabeldengannamasamadengannamainstantersebut. 4. TipetipeData ActionScript3.0mempunyaibeberapatipedataprimitifsepertiyangdiberikandalamTabel2.1.Selainitu ActionScriptjugamempunyaibeberapatipedatakompleksyangdibangundaritipedataprimitifsepertiyang diberikandalamTabel2.2.Bahkankitabisamembanguntipedatasendiri,dalambahasapemrogramanobjek seringdikenaldengannamaclassobjek. Tabel2.1.TipedataprimitifActionScript3.0 TipeData String Pengertian Sebuahkarakteratausederet karakter Contoh vartextSaya:String=HelloWorld, bisajugaditulisdengan: vartextSaya:String textSaya=HelloWorld Boolean Number Int Hanyabernilaibenar(true)atausalah (false) Bilanganriilpositifdannegatif Bilanganbulatpositifdannegatif (2.147.483.648s.d.2.147.483.647) Uint Bilanganbulatpositif (0s.d.4.294.967.295) * Tipedatasembarang(biasanya digunakanuntukmenampungdata yangbelumdiketahuitipenya) vardataBaru:*=dataSembarang varwarnaBola:uint=0xFF00FF varsudahSelesai:Boolean=true varpercepatan:Number=0.01 varradiusBola:int=10

Tabel2.2.BeberapaTipedatakompleksActionScript3.0 TipeData MovieClip Sprite TextField Pengertian Sebuahsimbolmovieclip SebuahSprite Sebuahfieldteksyangbertipe dynamicataufieldteksyangbertipe Contoh vartokohSaya:MovieClip=newMovieClip() varkotak:Sprite=newSprite() vartulisan:TextField=newTextField()

input(secaradefaultakanbertipe dynamic) SimpleButton Date Array Sebuahsimbolbutton(tombol) Datadalamformattanggal Larikatauarrayyangdapatmemuat lebihdarisatunilai

tulisan.text=TulisanDinamis varstart:SimpleButton=newSimpleButton() varultah:Date=newDate() vararrayBilangan:Array=newArray() arrayBilangan=[2,3,15]

Objek

Strukturdasardarisetiapentitas vargambar:Objek:newObject ActionScript.Objekjugamerupakan gambar.nama=fotoaction suatubentukvariabelyangbisadiatur gambar.panjang=600 sendiriuntukmenyimoanberbagai nilaisebagaialternatifdariArray

Untuktipedatakompleksakanlebihmudahdipahamipadasaatnantikitamemakainya. Apabilaandamulaibekerjadengankonseppemrogramanberorientasiobjekyangmenggunakanbeberapa Class,andaperlumenggunakanbeberapakatatambahandidepanvariabelyangmenunjukkanruanglingkup pengaksesanvariabel,misalnya: publicvarradiusBola:int PenjelasanmengenaiClassakandibahasdalambab3,namundemikianruanglingkupvariabeldalam ActionScript3.0akandiberikandiawalkarenasudahkitabutuhkandalampemrogramandengan FlashDevelop.ActionScript3.0mendefinisikanempatkatauntukmenunjukkanruanglingkupvariabel(atau punfungsi/method),yaitu: 5. public:dapatdiaksesolehsemuabagiankodedidalamkeseluruhanaplikasi/projecttempatvariabel didefinisikan private:hanyadapatdiaksesolehmethod/fungsitempatvariabeldidefinisikan internal:dapatdiaksesolehsebarangclassyangdidefinisikandalampackageyangsama. protected:hanyadapatdiaksesolehmethod/fungsitempatvariabeldidefinisikandanclassyangextend classtempatvariabeldidefinisikan

Operator Aritmetika(+,,*,/).ActionScriptmengakomodasisemuaoperatoraritmetikasesuaidenganaturan aturanperhitungannya,denganperkaliandituliskandengan*sedangkanpembagiandituliskandengan/. Modulo(%).ActionScriptjugamengakomodasioperatormodulodengansimbol%,misal:5%3 //menghasilkan2. Increment(++)dandecrement().ActionScriptdapatmenambahataumengurangi1darisuatubilangan denganoperatortunggal(++atau),misalnya: varbilangan:int=10 bilangan++//menghasilkan11 bilangan//menghasilkan10lagi Operatormajemuk(+=,=,*=,/=,dan%=).ActionScriptmenyediakanoperatormajemukuntuk mempersingkatpenulisan,misalnya: varbilangan:int=10 bilangan+=2//artinyasamadenganbilangan=bilangan+2,menghasilkan12 bilangan/=3//artinyasamadenganbilangan=12/3,menghasilkan4

6.

Penggunaanpernyataankondisional 6.1. PernyataanIfdigunakanuntukmengijinkanpemrosesanbagiandariblokActionScripthanyajikakondisi yangdimintabenar.PernyataanIfmempunyaibentukpenyajiansebagaiberikut:

If(kondisi){ } Jikakondisibenar,makaprosesakandijalankan.Silahkanmencobapotonganprogramberikutdalam FlashDevelopfileDasarAS3anda publicfunctionMain():void{ varx:Number=2 if(x<3){ trace(xlebihkecildari3) } Else{ } Simbol == != <,<=,>,>= And(&&),atau(||) Andadapatmenggunakanoperatorlogikaataupunperbandingansepertidalamtabel2.3 Tabel2.3.SimbolsimbolyangdigunakanuntukmembentukEkspresilogika Peterangan Samadengan Tidaksamadengan Perbandingan Operatormajemuk Contoh If(a==1){trace(asamadengan1)} If(a!=1){trace(atidaksamadengan1)} If(a>=1){trace(alebihbesaratausamadengan1)} If(a=1&&b=2){trace(a=1danb=2)} trace(xlebihbesaratausamadenganxtidakakanditulisapapun) Prosesyangakandikerjakanjikakondisibenar

6.2. IfElse.PenambahankataElsesebagaitambahblokpernyataanIfberartiprogramakanmengerjakan blokprogramdidalamblokElsejikakondisididalampengujianIftidakbenar. If(a==1){ trace(asamadengan1 } Else{ trace(atidaksamadengan1) } 6.3. Switchcase.PernyataanSwitchCasedigunakanuntukmengujibeberapakemungkinankondisi. PernyataanSwitchmemuatvariabelyangakandiuji,sedangkansetiappernyataanCasemenyatakan kemungkinannilaiuntukmenguji.DiberikanjugapernyataanBreakuntukmencegahpengerjaaninstruksi intruksiselanjutnya.Perhatikancontohberikutini. Switch(a){ case1:trace(satu) case2:trace(dua) break} 7. Penggunaankalang(Loop)

7.1. ForPernyataanFordigunakanuntukmengerjakanprosesiterasidalamjumlahtertentu.
for (var i:Number = 0; i < 3; i++) { trace(i) } // akan menampilkan 012

7.2. whileProsesdidalamblokWhileakandiujiselamakondisididalampernyataanWhilebenar. vari:int=0 while(i<5){ trace(i) i++

}//akanmenampilkan01234 7.3. doWhile.Prosesdidalamblokdowhileminimalakandikerjakansekali,kemudianakandilanjutkan pengujiankondisididalampernyataanWhile.Prosesakandijalankanberulangkaliselamakondisimasih benar. vari:int=0 do{ trace(i) i++ }while(i<5)//akanmenampilkan01234 8. BekerjadenganClass SalahsatukelebihanActionScript3.0adalahdukungannyaterhadappemrogramanmenggunakanclassclass. Denganpenggunaanclass,andadapatmenerapkankonseppemrogramanberorientasiobjekdalam pengkodeanprogramanda.Sebuahclassadalahcetakbirudarisebuahobjek.Classmendefinisikanobjek secarapenuh,meliputidataobjekdanoperasioperasinya.Untukmembuatclassperludiperhatikanbeberapa halberikutini. a. PembuatanClassdalamActionScriptharusdiawalidengansebuahpackage.Sebuahpacketadalahgrup dariclass(bisahanyasatuclassataubeberapaclass).AndabisajugamenambahkannamaFolderdi belakangkatapackageyangmenunjukkandirektoritempatandamenyimpanclassanda.Misalnyaanda bisamembuatclassBolayangakanandataruhdalamfolderlibdenganmanambahkankatalibdibelakang katapackage Dokumendariclassharusdisimpandengannamayangsamadengannamadariclass,misalnya namaClass.as.MisalnyaclassBolayangandabuatharusandasimpandengannamaBola.as SebaiknyaclassyangandabuatmerujukkeclassyangsudahdimilikiFlash,misalnyaSpriteatauMovie Clip.GunakantambahankataextendsSpritepadalanjutannamaClassanda,misalnya publicclassBolaextendsSprite. Andabisajugamenambahkanvariabeldenganruanglingkuppublic,internalataupunyanglainnyasesuai kebutuhan.Misalnyaandabisamenambahkanvariabelvariabelyangbersifatpublic,seperti:radiusyang menunjukkanjarijaribola,warnayangmenunjukkanwarnabola,vxyangmenunjukkankecepatanbola searahsumbux,danvyyangmenunjukkanbolasearahsumbuy. Andabisajugamenambahkanmethodberupafungsidenganruanglingkupyangandainginkan.Didalam fungsi.Salahsatufungsiyangsebaiknyaadaadalahfungsidengannamafungsisamadengannamaclass anda.JadibuatlahfungsiBoladenganruanglingkuppublicdengammodelpengirimanparametervariabel radiusdanwarna.

b. c.

d.

e.

MisalnyaandadapatmembuatclassBolayangandataruhdidalamFolderlibdariprojectDasarAS3.as3proj denganlangkahberikutini.BukaprojectDasarAS3yangsudahandabuatsebelumnya.Lanjutkandengan membuatfileclassAS3melaluimenuFileNewAS3Document.Lanjutkandenganmemberinama dokumenandamelaluimenuFileSaveAs(Ctrl+Shift+S),pilihsubfolderlibdarifolderDasarAS3,berinama Bola.as.

Misalkanobjekbolaandamempunyaibeberapavariabelyangbersifatpublic,yaitu:radius,vx,danvy packagelib{//tambahkanfoldertempatandamenyimpanfileBola.asAndajikamenginginkan, importflash.display.Sprite; publicclassBolaextendsSprite{ //deklarasivariabelprivateyanghanyaberlakudandigunakandidalamclassBolasaja privatevarradius:Number;//jarijaribolayangakandibuat privatevarcolor:uint;//warnabolayangakandibuat //deklarasivariabelpublicyangberlakudandigunakanolehfileyanglain. publicvarvx:Number=0;//kecepatanbolasearahsumbuxdenganrumusvx=v*cosq publicvarvy:Number=0;//kecepatanbolasearahsumbuydenganrumusvy=v*sinq publicvarv:Number=0;//kecepatanbola publicvarmassa:Number=0; publicvarindeks:Number=0; publicfunctionBola(radius:Number=40,color:uint=0xff0000){//pemberiannilaidefault } this.radius=radius;//menyamakanpropertiboladenganparameterinputdari this.color=color;//menyamakanpropertiboladenganparameterinputdari graphics.beginFill(color);//mulaimewarnaibola graphics.drawCircle(0,0,radius);//mulaimenggambarboladenganpusat(0,0) graphics.endFill();//mengakhirimewarnaibola //misalpackagesport{....isiclass.....}artinyaandamenyimpanfileBola.aspadafoldersport

propertibola fungsibola fungsibola

danjarijari=radius } package { }

publicclass {

} f. g. h. i. j. 9. Fungsi

packagenamaFolder{ publicclassnamaClass{ } }

10. Event,Listener,danEventHandler SemuainteraksiuserdidalamFlashdikelolaoleheventeventbeberapacontoheventadalah:mouseclick, mousemove,inputkeyboard,loadingfile,danlainlain.Dalambukuiniakanbanyakmenggunakan pengaturaneventuntukmendisaininteraksiuser. DalamActionScript,suatuobjekbisamendengarkan(listen)eventyangterjadipadadirinyadengan menggunakanmethodaddEventListenerpadaobjektersebut.Methodinimembutuhkanduaargumen, yaitu: Eventapayangakandidengarkan,misalnyaMouseEventataupunKeyboardEvent Fungsiapayangakansayakerjakanapabilasayamendegarkanevent.

Dalamcontohkita,baris:
tombolMulai.addEventListener(MouseEvent.CLICK,tekanTombol); function tekanTombol(mevt:MouseEvent):void{ ISI FUNGSI }

Mempunyaimaksudsebagaiberikut: TomboldengannamainstancetombolMulaiakanmendengarkaneventMouseClick (MouseEvent.CLICK) ApabilatombolMulaidiclickdenganmouse,makafungsitekanTomboolakandipanggildan dikerjakan.FungsitekanTomboldinamakanEventHandler.Sebuaheventhandlerharusberupa fungsidengansatunilaiinput(misalnyadalamcontohkitaadalahmevt:MouseEvent)dantidak mengembalikannilaiapaapa(yaitumempunyaitipekeluaranvoid).

berinamalayerpertamasebagaiutama buatsebuahtextstatisdengantulisan"berapajumlahbolayangandalihat?" buatsebuahtextboxlagidenganmodeinputTextberinamainstace"txtJawab.namatxtJawabiniyangakankita gunakandalamkodeprogramsebagaivariabelyangmenunjukketextjawaban

buatsebuahlayerlagiberinamascript.disinilahtempatkitaakanmenempatkankodeprogramdalamactionscript 3.0 tambahkansebuahobjekspritedengannamaspPapansebagaitempatmeanruhbolayangakankitatampilkhan. buatlahsebuahobjekshapeberbentukpapankotakdenganukuran300x300.taruhlahkotaktersebutdidalam objekSprite,denganmenjadikanshapetersebutsebagaianakdariSpritespPapan denganmenuliskanspPapan.addChild(shpKotak) buatfungsiuntukmembuatbolaberinamafungsibuatBoladenganparameterkyangnantinyamenunjukkpada bolakek bangkitkanbilanganrandomrkemudianlakukanloopinguntukmembuatbola buatTombolOKCekuntukmelihatbenartidaknyajawaban masukkemenuwindowlibrarycommonbuttonpilihtombolbuttonayngandainginkan,misalnyatombollbulat arcade,sayapilihclassicbuttonarcadebuttonred.berinamatmbCek(diambildarikatatombolCek) padabuttontmbCektambahkanaddEvenListeneruntukmendengarkanevent,misalnyamouse.Click,dihubungkan denganfungsicekJawab,artinyajikatombolinidiklikdenganmousemakaakanmengerjakanfungsicekJawab dalamfungsicekJawab.lakukanpengujianapakahisidaritxtJawabsamadenganjumlahbola,jikaya,maka keluarkanpesan jawabanandabenar.denganmenuliskannyadidalamtextdinamiktxtPesan. varspPapan:Sprite=newSprite();

spPapan.x=20; spPapan.y=20; spPapan.graphics.lineStyle(2,0); spPapan.graphics.beginFill(0xFFFFFF,0.9); spPapan.graphics.drawRect(0,0,300,300); spPapan.graphics.endFill(); stage.addChild(spPapan); varshpBola:Shape=newShape(); functionbuatBola(k:int):void{ } varr:int; r=1+Math.round(Math.random()*9); for(vari:int=1;i<=r;i++){ buatBola(i); } shpBola.graphics.lineStyle(2,0); varindeksWarna:int; indeksWarna=k*25+255; varposisiBola:int; posisiBola=10+k*25; shpBola.graphics.beginFill(indeksWarna,0.9); shpBola.graphics.drawCircle(posisiBola,20,10); shpBola.graphics.endFill(); spPapan.addChild(shpBola);

tmbCek.addEventListener(MouseEvent.CLICK,cekJawab); functioncekJawab(mevt:MouseEvent):void{ tmbAcak.addEventListener(MouseEvent.CLICK,acak); functionacak(mevt:MouseEvent):void{ shpBola.graphics.clear(); r=1+Math.round(Math.random()*9); for(i=1;i<=r;i++){ } buatBola(i); } varjawab:int=int(txtJawab.text); if(jawab==r){ else{ } txtPesan.text="Maaf,Salah"; } txtPesan.text="AndaBenar"; }