27. februar 2003 - 11:26Der er
6 kommentarer og 1 løsning
Loop en scene - det kører ikke for mig..? Haster!
Jeg er ved at lave et relativt simpelt spil.
I det spil vil jeg køre en scene igennem. Når den er kørt igennem skal næsten helt det samme ske igen. Eneste forskel er, at score skal gå med videre, en variabel skal give et nyt random-tal og antal patroner skal gå tilbage til hvad det var før.
Problemet for mig er, at når scenen er kørt igennem og jeg laver en gotoAndPlay("game", 1); - så kører den ikke actionsscripts og movieclips igen.
Variablerne forbliver de samme, movieclips, kører ikke osv. Med andre ord - man løber hurtigt tør for skud, man kan ikke score flere point, og det man skal skyde efter bliver ved med at komme samme sted (det var det random-tallet var til :-)
Så spørgsmålet er: Hvordan får jeg en scene til at starte forfra, hvor den stadig kører actionscripts og movieclips og altså beholder de i forvejen definerede variabler indtil jeg i scenen omdefinerer dem..?
Håber det giver mening, og håber at der er nogen, derude, der kan svare på mit spørgsmål.
Det handler om hvordan du sætter og kalder dine variable. Når du har et spil, er det en rigtig god ide at samle alle "betydningsfulde" variable i tidslinjen på frame 1. Det kan f.eks. være tid, antal skud,liv osv. På den måde har du direkte adgang til dem, uden at skulle klikke dig ind i mc's osv.
Det kunsten går ud på, er at initiere dine variable i starten af spillet, og derefter lade dem være - altså kun ændre i dem når det er nødvendigt. Det betyder, at giver du din helt 3 liv og 100 skud til at starte med, må du for alt i verden ikke ende i frame 1 igen, for så får han sine 3 liv og 100 skud tilbage uanset hvor mange gange han er blevet ramt.
På den anden side, er det smart at kunne styre hvor mange liv han har tilbage og have adgang til at tælle ned, når skurkene får has på ham. Det kan du stadigvæk med _root.liv (eller hvad du nu har kaldt det). Tricket er altså at ændre i en variable som ikke senere bliver ændret ved et "uheld".
Dit problem lyder som om du får initieret dine variable én gang, hvorefter de hænger ved. Hvis du konsekvent sørger for at kalde de variable som ligger i Frame 1 (f.eks. igennem en onClipEvent(enterFrame) ), kan du frit ændre dem i Frame 1, og de VIL så betyde noget over det hele i dit spil.
Opsummerer lige: Saml ravl og krat i Frame 1. Kald variablerne i Frame 1 de steder hvor det er vigtigt (tælle skud og liv ned). Når du ændrer i Frame 1's variable, ændrer du HELE spillets variable.
Om ikke andet var det da et par hints at arbejde med til fremover.
Men jeg synes ikke det hjælper mig så meget i tilfældet her (kan self være jeg bare er sinke, men.. :-)
I dette tilfælde er spillet noget så banalt som lerdueskydning. Der kommer altså en lerdue flyvende og man har to skud til at skyde den ned i. Når det lykkes for en, får man et point.
Før lerduen kommer, er der en counter (movieclip), der tæller ned fra 3 og med attachmovie indsætter et movieclip i _root, med navnet motion0, motion1, motion2 etc, inden for intervallet af mit random tal.
Når lerduen er skudt ned eller fløjet forbi, skal scenen starte forfra. Bullets skal sættes til to igen, der vælges en ny, random motion path til lerduen og score skal forblive som den er. Til det har jeg i frame 1 indsat:
if (!score > 0) { score = 0; }
Men altså - når lerduen er fløjet forbi første gang - eller skudt ned - så kan jeg ikke gennemskue hvad der er galt - om scenen bare ikke starter igen, eller om den starter igen, men 'noget blokerer' for at alt hvad der er i den bliver vist/udført.
F.eks. bliver countdown, som er et movieclip, indsat i frame1, ikke vist igen. Lerduens motion-clip er derfor altid det samme (bliver indsat i slutningen af countdown). - Og bullets bliver ikke sat til 2 igen, selvom der står bullets = 2; i actions i frame 1.
I slutningen af mit random-valgte motion-clip laver jeg en _root.gotoAndPlay("game", 1); - har også prøvet bare med _root.gotoAndPlay(1); og gotoAndPlay("game, 1);
Er det der den er gal måske? Eller er der måske bare et eller andet andet, jeg skal gøre anderledes..?
Vil næsten foreslå dig at lægge din .fla ud, så vi (de andre "eksperter") kan kigge i den. Hvis du ikke vil dele dit arbejde med resten af verden, kan du også bare sende den direkte til mig på: tomlau@it-c.dk
Det er vist noget af det som skal ses for at blive 100% forstået ;o)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.