Drop_and_Catch 1
2 movieClips oprettes, frugt_mc og kurv_mc.
Ind på scenen med dem på et lag kaldet graphics.
På actionScript lages indledes på sædvanlig vis med variabler og startværdier:
stop(); Mouse.hide(); var winScore:Number = 3; var score:Number = 0; var speed:Number = 10; var stageH:Number = stage.stageHeight; var stageW:Number = stage.stageWidth; score_txt.text = "Get: " + winScore + " fruits";
score_txt er et tekstfeldt du tegner med tekstværktøjet på et tekst-lag. I property-panelet kan du indstille det til at være dynamisk, give det dets nævnte instancenavn, og formatere det på noget prøvetekst, som du så sletter igen bagefter. Teksten blir alligevel straks erstattet af værdien ovenfor.
Så til den konstante bevægelse:
addEventListener(Event.ENTER_FRAME, MOVE); function MOVE(e:Event):void { kurv_mc.x = mouseX; frugt_mc.y += speed; if (frugt_mc.y > stageH) { frugt_mc.y = 0; frugt_mc.x = Math.random()*stageW; speed++; } }
Følgende foregår konstant, på den valgte frame-rate:
kurv_mc følger musens x-værdi.
frugt_mc bevæger sig nedaf positivt på y-aksen, og hvis den rammer bunden, lægges den straks op igen på en tilfældig x-værdi, og farten øges en smule til næste himmelfald.
Bemærk Math.random(), som udgør en random værdi mellem 0 og 1 , og derfor skal ganges med max-værdien stageW, for at udgøre en random værdi mellem 0 og hele scenebredden.
Hvis man fanger den med kurv_mc (skrives indenfor MOVE, før dens afsluttende '}'):
if (kurv_mc.hitTestObject ( frugt_mc)) { score++; score_txt.text = "your score is: " + score + " fruits"; frugt_mc.y = 0; frugt_mc.x = Math.random () * stageW; speed++; if (score >= winScore) { RESUME("win"); } }
Hvis man rammer, er der pointstigning, og det vises i tekstboksen. Så blir frugt_mc’s y-værdi nulstillet påny et tilfældigt sted på indenfor bredden og farten øges til kommende tur ned.
Og derefter blir der vurderet om man er nået til vinder-stadiet og functionen RESUME(med vedhæftet parameter “win”) blir kaldt.
Se bort fra denne forklaring lige efter du har læst og forstået den, se på koden og lev dig ind i den – og skriv så en /*kommentar*/ med helt egne ord og din egen forklaring udfra helt egen forståelse.
Nedenunder MOVE defineres RESUME (som ber om et vedhæftet parameter, som den jo også får, og som den skal bruge til videre behandling):
function RESUME(where:String):void { Mouse.show(); removeEventListener(Event.ENTER_FRAME, MOVE); gotoAndStop(where); }
Et parameter er en variabel, der videresendes fra funktion til funktion, fordi dens værdi kendes i den ene, og bruges i den anden. RESUME definerer en variabel i sin parenthes, og MOVE gir den en værdi i sin parenthes. Der kan være mange parametre i en enkelt function og de adskilles med komma.
Forslag til udbygning:
//random speed
//mere frugt fra himlen, individuel point-værdi, individuel speed
//POSITION, EVALUATE functions
//sidelæns spil
//undgå i stedet for at fange
//splash, og lose + grafik
//animationer på mc’erne
//lyd
se evt. Drop_and_Catch 2
Created: 6 April 2008 • by admin
Categories: as3 •oevelse
Comments: none yet • add one!
