Pettersenper Skrevet 17. april 2011 Del Skrevet 17. april 2011 Hei, jeg holder på å lage mitt første flash spill, men mitt første forsøk viste seg å bli for rotete til å kunne legge til mange levler. Derfor tester jeg ut det på ett enkelt nytt spill for å lære meg hvordan jeg skal få det til å fungere. Når jeg når mål kommer det opp en tekst man kan trykke på for å gå til neste level. Problemet er at den ikke går til neste level men til siste selv om jeg har lagt til stop(); på level 2. På teksten bruker jeg var nextLevel = nextLevel nextLevel.alpha = 0.00 // Nei, dette fungerer ikke bra nok ettersom du bare kan trykke på rett plassering for å gå videre if (circle_mc.hitTestObject(platforms.goal1)) { nextLevel.alpha = 1.00 nextLevel.addEventListener (MouseEvent.CLICK, nextLevel1); function nextLevel1(event:MouseEvent):void { platforms.nextFrame(); //SKAL gå til neste level her (nummer 2 i det laget) i stedet går den til den siste som er nummer 3 stop(); } } Legger ved fla filen så dere kan se på hva som er feil TestGame.rar Noen som kan hjelpe? Lenke til kommentar
molty Skrevet 18. april 2011 Del Skrevet 18. april 2011 Lastet det ned å prøvde ulike løsninger, men fungerte ikke det heller. Ser ut som du har gjort noe som på en måte overskrider det den skal gjøre. Du kan f.eks prøve å bruke gotoAndStop(frame) hvor du bruker da currentFrame+1 som verdi inni der. Lykke til videre med å finne ut hva som er feilen da - Molty Lenke til kommentar
Pettersenper Skrevet 18. april 2011 Forfatter Del Skrevet 18. april 2011 Takker Det gikk ikke med currentframe+1 nei Har prøvd å finne en løsning lenge men fant ingen Lenke til kommentar
designer0 Skrevet 19. april 2011 Del Skrevet 19. april 2011 Takker Det gikk ikke med currentframe+1 nei Har prøvd å finne en løsning lenge men fant ingen sån koden din er satt opp nå legger du konstant til nye event listenere så lenge karakteren hit-testen er true. problemet kan enkelt løses ved å flytte nextLevel.addEventListener (MouseEvent.CLICK, nextLevel1) ut av MoveCircle funksjonen. her er den fiksa koden. Jeg har også endra alpha = 0 og alpha = 1 til visible = false og visible = true, da dette er en bedre måte å skru av og på synligheten av et symbol. stop(); import flash.events.KeyboardEvent; import flash.events.Event; import flash.display.BlendMode; import flash.display.MovieClip; var KeyThatsPressed:uint; var rightKeysDown:Boolean = false; var leftKeysDown:Boolean =false; var upKeysDown:Boolean = false; var downKeysDown:Boolean = false; var gravity:Number =1; var yVelocity:Number=0; var canJump:Boolean=false; stage.addEventListener(KeyboardEvent.KEY_DOWN, PressAKey); stage.addEventListener(KeyboardEvent.KEY_UP, ReleaseAKey); function PressAKey(event:KeyboardEvent):void { if(event.keyCode == Keyboard.RIGHT) { rightKeysDown = true; } if(event.keyCode == Keyboard.LEFT) { leftKeysDown = true; } if(event.keyCode == Keyboard.UP) { upKeysDown = true; } if(event.keyCode == Keyboard.DOWN) { downKeysDown = true; } } function ReleaseAKey(event:KeyboardEvent):void { if(event.keyCode == Keyboard.RIGHT) { rightKeysDown = false; } if(event.keyCode == Keyboard.LEFT) { leftKeysDown = false; } if(event.keyCode == Keyboard.UP) { upKeysDown = false; } if(event.keyCode == Keyboard.DOWN) { downKeysDown = false; } } circle_mc.addEventListener(Event.ENTER_FRAME, movecircle); nextLevel.addEventListener (MouseEvent.CLICK, nextLevel1); function movecircle(event:Event):void { if(rightKeysDown) { circle_mc.x+= 5; } if(leftKeysDown) { circle_mc.x-= 5; } if(upKeysDown && canJump) { yVelocity=-15; canJump = false; } yVelocity +=gravity; if(! platforms.plattform.hitTestPoint(circle_mc.x, circle_mc.y,true)) { circle_mc.y+=yVelocity; } if(yVelocity > 20) { yVelocity=20; } for (var i:int = 0;i<10;i++) { if(platforms.plattform.hitTestPoint(circle_mc.x, circle_mc.y, true)) { circle_mc.y--; yVelocity = 0; canJump=true; } } var nextLevel = nextLevel nextLevel.visible = false // gjennomsiktighet, 0.25 betyr viser 25 % if (circle_mc.hitTestObject(platforms.goal1)) { nextLevel.visible = true } } function nextLevel1(event:MouseEvent):void { platforms.nextFrame(); stop(); } 1 Lenke til kommentar
Pettersenper Skrevet 19. april 2011 Forfatter Del Skrevet 19. april 2011 Tusen takk! Lenke til kommentar
Pettersenper Skrevet 19. april 2011 Forfatter Del Skrevet 19. april 2011 Kan jeg gjøre noe for å få sirkelen til å starte på samme plass hver gang? Nede til venstre? Lenke til kommentar
designer0 Skrevet 19. april 2011 Del Skrevet 19. april 2011 Kan jeg gjøre noe for å få sirkelen til å starte på samme plass hver gang? Nede til venstre? alt du trenger å gjøre er å legge til denne linjen til nextLevel() funksjonen: circle_mc.x = 60 1 Lenke til kommentar
Pettersenper Skrevet 19. april 2011 Forfatter Del Skrevet 19. april 2011 Jeg lurer på enda en ting: Når jeg lager en ny bane må alt som er med i koden på første bane være med på de andre banene. Om jeg for eksempel fjerner målet på siste bane får jeg opp massevis av denne meldingen helt til jeg skrur av igjen. TypeError: Error #2007: Parameter hitTestObject must be non-null. at flash.display::DisplayObject/_hitTest() at flash.display::DisplayObject/hitTestObject() at TestGame_fla::MainTimeline/movecircle() Siste bane skal jo ikke inneholde ett mål som leder til neste bilde, men ett mål med en annen funksjon av ett eller annet slag. Lenke til kommentar
molty Skrevet 19. april 2011 Del Skrevet 19. april 2011 Da må du ta en sjekk om du har kommet til siste bane. Dette kan gjøres ved å bruke "platforms.totalFrame" husker ikke om du må ha (); på slutten der eller ikke. Prøv begge. Og hvis da platforms.currentFrame == platforms.totalFrame, så skal den ikke gå til nextframe 1 Lenke til kommentar
Pettersenper Skrevet 19. april 2011 Forfatter Del Skrevet 19. april 2011 ok Men kan jeg likevel legge til ting på en bane som jeg ikke har på en annen uten at jeg får opp masse feilmeldinger? Lenke til kommentar
Pettersenper Skrevet 21. april 2011 Forfatter Del Skrevet 21. april 2011 (endret) Jeg legger inn function nextLevel1(event:MouseEvent):void { if (platforms.currentFrame == platforms.totalFrames) { circle_mc.removeEventListener(Event.ENTER_FRAME, movecircle); nextLevel.removeEventListener (MouseEvent.CLICK, nextLevel1); gotoAndStop(2) } else platforms.nextFrame(); circle_mc.x = 60 stop(); } Det fungerer, jeg blir sendt til bilde 2 når jeg når jeg klarer siste level, men i output vinduet får jeg dette feilen: TypeError: Error #1009: Cannot access a property or method of a null object reference. at TestGame_fla::MainTimeline/nextLevel1() EDIT: Når jeg nå prøvde med labels istedenfor : gotoAndStop("menu") fikk jeg ikke opp noen feilmelding av en eller annen grunn Endret 21. april 2011 av Pettersenper Lenke til kommentar
Pettersenper Skrevet 21. april 2011 Forfatter Del Skrevet 21. april 2011 Nei, det fungerte visst ikke likevel. Den går til neste bilde på platforms bildet (som er game over) i stedet for å gå til parent og til meny function nextLevel1(event:MouseEvent):void { if (platforms.currentFrame == platforms.totalFrames) { circle_mc.removeEventListener(Event.ENTER_FRAME, movecircle); nextLevel.removeEventListener (MouseEvent.CLICK, nextLevel1); gotoAndStop("menu") } else { platforms.nextFrame(); circle_mc.x = 60 stop(); } } Lenke til kommentar
molty Skrevet 2. mai 2011 Del Skrevet 2. mai 2011 Hvis det er movieclipen som skal gå videre med gotoandstop må du bruke INSTANS.gotoAndStop(); Eller hvis det er i stage så kan du bruke uten, eller hvis dt ikke funker, stage.gotoAndStop(); Lenke til kommentar
Pettersenper Skrevet 2. mai 2011 Forfatter Del Skrevet 2. mai 2011 Jeg fant ut feilen og glemte å poste det her. Problemet var rett og slett at det ikke var siste bilde men 2. siste. Løste det med å sette if (platforms.currentFrame == platforms.totalFrames-1) Lenke til kommentar
Pettersenper Skrevet 2. mai 2011 Forfatter Del Skrevet 2. mai 2011 Men jeg har ett annet problem som jeg ikke klarer å få vekk. For vær nye level får jeg opp denne feilmeldingen: TypeError: Error #1009: Cannot access a property or method of a null object reference.at Game_fla::MainTimeline/movecircle() Du kan laste ned nåverende versjon av spillet her: Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå