Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[AS3] Gehele actionscript reloaden

Pagina: 1
Acties:

  • LocoShady
  • Registratie: Mei 2003
  • Laatst online: 06-10 17:24
Hoi,

Ik ben bezig met mijn eerste spelletje in flash. Het ontwikkelen er van gaat tot nu toe prima echter als iemand af gaat moet de score toegevoegd worden aan de database, ook dit gaat zonder problemen. Echter nadat de score is toegevoegd moet alles worden gereset en opnieuw beginnen. Dit krijg ik echter niet voor elkaar. Ik stop alle eventListeners maar toch gaat hij klagen met diverse meldingen (bij eventListeners waar hij eigenlijk allang niet meer mag kijken).

Voor het gemak heb ik even de hele game op mijn server gezet exclusief de php bestanden. Je kan het spel prima spelen echter als je dus af gaat gaat het mis.. (hij kan de php bestanden natuurlijk niet vinden maar dat klopt dus ;) )

http://essek.nl/gathering/archief.zip

Ik heb al 2 keer de hele structuur omgegooid maar krijg het dus op geen enkele manier voor elkaar, iemand die toevallig een geniale ingeving heeft?

bvd. :)

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Weet je zeker dat je alle event listeners verwijdert?

Voorbeeldje: er wordt een raketje afgevuurd. Raketje heeft een event listener voor ENTER_FRAME. Als je het raketje verwijdert [waarschijnlijk met this.parent.removeChild(this)] zonder deze event listener te verwijderen, dan bestaan object en event listener nog steeds, alleen zonder parent.

TabCinema : NiftySplit


  • LocoShady
  • Registratie: Mei 2003
  • Laatst online: 06-10 17:24
Bozozo schreef op dinsdag 30 september 2008 @ 10:41:
Weet je zeker dat je alle event listeners verwijdert?

Voorbeeldje: er wordt een raketje afgevuurd. Raketje heeft een event listener voor ENTER_FRAME. Als je het raketje verwijdert [waarschijnlijk met this.parent.removeChild(this)] zonder deze event listener te verwijderen, dan bestaan object en event listener nog steeds, alleen zonder parent.
Ben er ondertussen wat verder gekomen en er achter gekomen dat het probleem ligt bij:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
at movedirection16_fla::MainTimeline/moveEnemy()

de moveEnemy functie. Als ik namelijk geen vijanden aanmaak dan werkt alles zonder problemen, het wordt alleen een beetje een saai spel zonder vijanden ;)

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

Je stuurt alles centraal aan? Een frame handler, die alle objecten verplaatst?

Dat is niet zo handig. Het kost een boel geregel, je moet bijhouden welke objecten er bestaan (zie ook jouw error) en het wordt een zootje als je veel objecten hebt.

Als je meer (geavanceerdere) spelletjes wilt maken zul je moeten leren object-georiënteerd te programmeren. Het is even wennen maar uiteindelijk kun je veel snellere en overzichtelijkere code maken.

Omdat je waarschijnlijk geen zin hebt om je bijna-voltooide spelletje te herschrijven, kun je nu nog gewoon debuggen. Er is een of andere functie (waarschijnlijk je centrale enter_frame handler) die probeert je enemies te verplaatsen, nadat je die hebt verwijderd. Er wordt dus gezegd enemy472.x += 1, maar enemy472 bestaat niet meer en dus krijg je deze error omdat het 'x' atrribuut van die enemiy niet meer kan worden uitgelezen.

Zet een trace('hi') in die functie, en verwijder zorgvuldig event listeners totdat je geen 'hi' meer ziet verschijnen na het spelletje.

TabCinema : NiftySplit