Hermed beskrivelsen og en anvendelsesprocedure for implementering i eksisterende scripts.
Princippet i trin
- at definere variabler til points, maximum-værdi, minimum-værdi og start-værdi
- at ændre værdierne på passende tidspunkt
- at vise værdierne for bruger
- at chekke om værdierne har nået den afgørende værdi
- at udføre konsekvenserne deraf
Det er meget muligt, at du har brug for kun at tælle opad – eller nedad, men her går eksempel i begge retninger, som du kan tilpasse. Eksemplet kan udbygges til også at tælle liv.
Foreslået fremgangs-rækkefølge
Nogle ’sigende’ variabler
(hører til i øverste del af et script, for nemt at kunne ’skrues’ på) :
var winScore:Number = 10; var loseScore:Number = -10; var points:Number=0;
Et dynamisk tekstfelt til display
(På et score-lag i spil.scenariet med instancenavnet ’score_txt’).
Det kan tegnes med tekstværktøjet og indstilles til dynamisk i property panelet, hvor det også formateres med lidt prøve-tekst i. Det skal være tomt for tekst når du er færdig, for teksten blir scriptet frem.
Tekst-feltet kan evt. starte ud med en forklaring:
score_txt.text = "Get "+ winScore.toString() + " points!";
Ændring af værdier
Så stilles spørgsmålet:
Hvornår eller under hvilke omstændigheder skal points- værdien stige?
Det kunne fx. være hvis noget rammer noget andet, eller hvis en status-variabel er opfyldt, eller en boolean er blevet sat til true.
I den øskede situation, som regel inden for en if-condition, øges points med den ønskede værdi:
points += 1; // eller points=points+1; // eller points+1;
Hvornår eller under hvilke omstændigheder skal points- værdien falde?
Samme overvejelser for mistede points, og hvormange af gangen:
points - -; // eller med kompleksitet fx. points/(en brøkdel af den tid der er gået);
Nye spørgsmål:
Hvornår skal points’ene vises?
Tekstfeltet påkaldes, som vist nedenfor, fx. hver gang points’ene ændres.
Hvornår har man vundet eller tabt?
Eller som i dette eksempel: Hvilke top- eller bund- værdier skal points’ene sammenlignes med?
Hvad skal der ske hvis sammenligningen passer?
Eksempel
I simpel rækkefølge
points += 2; score_txt.text = "Your points = "+ points.toString() ; if (points == winScore) { // her slukkes for evt. igangsatte ENTER_FRAME listeners gotoAndStop("win"); }
- Og tilsvarende for minus-points.
I en udregnende function
////////////// points += 2; EVALUATE(); ////////////// points --; EVALUATE(); ////////////// function EVALUATE():void { score_txt.text = "Your points = "+ points.toString() ; if (points == winScore) { // her slukkes for evt. igangsatte ENTER_FRAME listeners gotoAndStop("win"); } if (points == loseScore) { // også her slukkes for kørende ENTER_FRAME listeners gotoAndStop("lose"); } }
