actionscript 3 - Breakout game in AS3 error #2007 -


i came upon error can't fix. i'm making game , should "you lose" after losing 3 lives, in case freezes , error.

typeerror: error #2007: parameter hittestobject must non-null. @ flash.display::displayobject/_hittest() @ flash.display::displayobject/hittestobject() @ fatality/enterframeevents()[c:\documents , settings\labo\bureaublad\gip 12 mei\fatality.as:26]

have @ code. code i've written in class

basicly class "game over" power in breakout game. when touches paddle, it's game over. problem freezes after touches paddle instead of showing "you lose".

package  {     import flash.display.*;     import flash.events.*;      public class fatality extends movieclip     {         private var yspeed:number = 1;         private var _root:movieclip;          public function fatality()         {             // constructor code             addeventlistener(event.added, beginclass);             addeventlistener(event.enter_frame, enterframeevents);         }         private function beginclass(event:event):void         {             //defining _root document root             ////je definieërt _root als het document root             _root = movieclip(root);         }         private function enterframeevents(event:event):void         {             this.y = this.y + yspeed;             if (this.hittestobject(_root.mcpaddle))             {                 this.removeeventlistener(event.enter_frame, enterframeevents);                 this.parent.removechild(this);                  if (_root.lives == 3)                 {                     _root.removechild(_root.hartje3);                     _root.removechild(_root.hartje2);                     _root.removechild(_root.hartje1);                 }                 else if (_root.lives == 2)                 {                     _root.removechild(_root.hartje2);                     _root.removechild(_root.hartje1);                 }                 else if (_root.lives == 1)                 {                     _root.removechild(_root.hartje1);                 }                 _root.gameover = true;                 //de listeners weg doen                 _root.mcball.removeeventlistener(event.enter_frame, _root.moveball);                 _root.mcpaddle.removeeventlistener(event.enter_frame, _root.movepaddle);                 removeeventlistener(event.enter_frame, _root.checklevel);                 removeeventlistener(event.enter_frame, _root.updatetextfields);                 //ga naar een lose frame                 _root.gotoandstop('lose');              }         }     }  } 

that last part refers lose frame, here code of lose frame

    //de lose frame  //reset het spel als je op je muis klikt stage.addeventlistener(mouseevent.click, resetgame);  function resetgame(event:mouseevent):void{     //deze listener weg doen     stage.removeeventlistener(mouseevent.click, resetgame);     //het spel resetten     gotoandplay(1); }  //de eindscore laten zien txtscore.text = "final score: "+score; 

i appreciate if helped me error because it's been annoying me quite alot, thanks.

edit

main code:

import flash.events.mouseevent; import flash.events.event;  stop(); //variabelen //nodige variabelen voor de beweging van de bal var ballxspeed:number = 8;//x snelheid van de bal var ballyspeed:number = 8;//y snelheid van de bal //hoeveel bricks er on zijn op het stage (podium) var brickamt:int = 0; //hoeveel levens je hebt var lives:int = 3; //als het game on var gameover:boolean = false; //de score van het spel var score:int = 0; //eerst heb ik een een functie gemaakt waar //al de code in zit die nodig om het spel te starten //dit bevat listeners, variabelen en andere dingen function begincode(event:mouseevent):void {     //doet de listener weg wanneer je klikt     stage.removeeventlistener(mouseevent.click, begincode);     //voegt een listener toe aan de paddle     //die een functie runt elke keer als een frame voorbij     mcpaddle.addeventlistener(event.enter_frame, movepaddle);     //voegt een listener toe aan de ball;     //die een functie runt elke keer als een frame voorbij     mcball.addeventlistener(event.enter_frame, moveball);      //voegt een listener toe om te checken of het level voorbij is;     addeventlistener(event.enter_frame, checklevel);     //verwijdert het "click start" tekst     txtstart.text = ''; }  function movepaddle(event:event):void {     //de paddle volgt de muis     mcpaddle.x = mousex - mcpaddle.width / 2;     //houdt de paddle op het stage      //als de muis te ver naar links gaat     if (mousex < mcpaddle.width / 2)     {         //houdt de paddle op het stage         mcpaddle.x = 0;     }     //als de muis te ver naar rechts gaat     if (mousex > stage.stagewidth - mcpaddle.width / 2)     {         //houdt de paddle on stage         mcpaddle.x = stage.stagewidth - mcpaddle.width;     } } function continuegame(event:event):void {     mcball.addeventlistener(event.enter_frame, moveball); } function moveball(event:event):void {     //dit de code voor de beweging van de bal     mcball.x +=  ballxspeed;//beweegt de bal horizontaal     mcball.y +=  ballyspeed;//beweegt de bal verticaal     //stuitert de bal weg van de muren     if (mcball.x >= stage.stagewidth - mcball.width)     {         //als de bal de rechterkant raakt         //van het scherm, en weg stuitert          ballxspeed *=  -1;     }     if (mcball.x <= 0)     {         //als de bal de linkerkant raakt         //van het scherm, en weg stuitert          ballxspeed *=  -1;     }     if (mcball.y >= stage.stageheight - mcball.height)     {         //als de bal de grond raakt         //stuitert het omhoog en verlies je 1 leven         //ballyspeed *= -1;         lives--;         if (lives == 2)         {             removechild(this.hartje3);         }         else if (lives == 1)         {             removechild(this.hartje2);         }         else if (lives == 0)         {             removechild(this.hartje1);         }         ballxspeed = 8;         ballyspeed = 8;         mcball.x = 151.9;         mcball.y = 264.9;         mcball.removeeventlistener(event.enter_frame, moveball);         stage.addeventlistener(mouseevent.click, continuegame);          //wanneer er geen levens meer on zijn         if (lives <= 0)         {             //het nu game on             gameover = true;             //de listeners weg doen             mcball.removeeventlistener(event.enter_frame, moveball);             mcpaddle.removeeventlistener(event.enter_frame, movepaddle);             removeeventlistener(event.enter_frame, checklevel);             removeeventlistener(event.enter_frame, updatetextfields);             //ga naar een lose frame             gotoandstop('lose');         }     }     else     {         if (mcball.y <= 0)         {             //als de bal de bovenkant raakt van het scherm             //en stuitert terug naar beneden             ballyspeed *=  -1;         }         //je raakt de paddle         if (mcball.hittestobject(mcpaddle))         {             calcballangle();         }     } }  function calcballangle():void {     //ballposition de positie van het balletje op de paddle     var ballposition:number = mcball.x - mcpaddle.x;     //hitpercent converts ballposition in een percentage     //helemaal naar links -0.5     //helemaal naar rechts 0.5     //het midden 0     var hitpercent:number = (ballposition / (mcpaddle.width - mcball.width)) - .5;     //neemt het hitpercent en maakt het een groter nummer zodat de bal     //werkelijk stuitert     ballxspeed = hitpercent * 10;     //zorgt dat het balletje terug omhoog stuitert     ballyspeed *=  -1; }  function makelvl():void {//zet de bricks op level 1     //checkt of er nog levels on zijn     if (currentlvl > lvlarray.length)     {         //het nu game on         gameover = true;         //de listeners weg doen         mcpaddle.removeeventlistener(event.enter_frame, movepaddle);         mcball.removeeventlistener(event.enter_frame, moveball);         removeeventlistener(event.enter_frame, checklevel);         removeeventlistener(event.enter_frame, updatetextfields);         //ga naar een lose frame         gotoandstop("win");     }     //vindt de array lengte van de level code     //de index moet currentlvl-1 zijn want:     //array indexes beginnen vanaf 0 en onze level start op 1     //onze level zal altijd 1 hoger zijn dan de index van de array     var arraylength:int = lvlarray[currentlvl - 1].length;     //de huidige rij van bricks die aan het maken zijn     var brickrow:int = 0;     //een lus die dr bricks op het stage zet     (var i:int = 0; i<arraylength; i++)     {         //checkt of het een brick moet zetten daar         if (lvlarray[currentlvl - 1][i] == 1)         {             //maakt een variabele aan van de brick             var brick:brick = new brick();             //regelt de coordinaten van de brick via de variabele en brickrow             brick.x = 15 + (i - brickrow * 7) * 75;             brick.y = 10 + brickrow * 20;             //checkt of de huidige brick een nieuwe rij nodig heeft             (var c:int = 1; c<=10; c++)             {                 if (i == c*7-1)                 {                     brickrow++;                 }             }             //nu zet dit de brick op het stage             addchild(brick);         }     } }  function checklevel(event:event):void {     //checkt of de bricks allemaal weg zijn     if (brickamt == 0)     {         //reset het level door het level te verhogen         currentlvl++;         //makelvl wordt opnieuw gerunt         //reset de tekst "click begin"         txtstart.text = "click begin";         makelvl();         //reset de positie van het balletje en de paddle         mcball.x = 150;         mcball.y = 265;         mcball.width = 10;         mcball.height = 10;         mcpaddle.x = 230;         //al de listeners weg doen         mcpaddle.removeeventlistener(event.enter_frame, movepaddle);         mcball.removeeventlistener(event.enter_frame, moveball);         removeeventlistener(event.enter_frame, checklevel);         //je "listent" voor een click van de muis om het spel terug te starten         stage.addeventlistener(mouseevent.click, begincode);     } }  function updatetextfields(event:event):void { } //als je clickt met je muis, begint het spel stage.addeventlistener(mouseevent.click, begincode); //de tekst die tevoorschijn komt; txtstart.text = "click begin"; //een functie maken om de text fields te updaten addeventlistener(event.enter_frame, updatetextfields); //het level maken makelvl();  pausebutton.addeventlistener(mouseevent.click, pausegame); function pausegame(e:mouseevent):void {     stage.framerate = 0; }  playbutton.addeventlistener(mouseevent.click, resumegame); function resumegame(e:mouseevent):void {     stage.framerate = 24; } 

code brick class:

//klassen moeten altijd in een packed zitten package  {     //display elements importeren die kunnen gebruiken in deze klasse     import flash.display.*;     import flash.events.*;      //de naam van de klasse definiëren en zeggen dat     //het de movieclip klasse "extends",     //dat wil zeggen dat het dezelfde properties heeft als die van een movieclip     public class brick extends movieclip     {         //de main timeline         private var _root:movieclip;         //alle klassen moeten een functie hebben die elke keer         //runt wanneer een instance van die klasse op het stage wordt gezet         public function brick()         {             //deze code runt wanneer de brick op het stage wordt gezet             addeventlistener(event.added, beginclass);             //enter frame code             addeventlistener(event.enter_frame, enterframeevents);         }         //private functions zijn functies die je niet kan gebruiken         //vanuit de main timeline, maar enkel vanuit de klasse zelf         private function beginclass(event:event):void         {             //je definieërt _root als het document root             _root = movieclip(root);             //verhoogt het aantal bricks op het stage             _root.brickamt++;         }         private function enterframeevents(event:event):void         {             //controleren of de player heeft verloren             if (_root.gameover)             {                 //deze brick kapot maken                 this.parent.removechild(this);                 //stoppen met deze code te runnen;                 removeeventlistener(event.enter_frame, enterframeevents);             }             //hit testing met het balletje             if (this.hittestobject(_root.mcball))             {                 //hierdoor stuitert het balletje verticaal                 _root.ballyspeed *=  -1;                 //creeër een power (werk met een random                 //om een powerup te maken en werk met een                 //tweede random om te bepalen welke power)                 makepowerup();                 //deze brick kapot maken                 this.parent.removechild(this);                 //stoppen met deze code te runnen;                 removeeventlistener(event.enter_frame, enterframeevents);                 //verlaagt het aantal bricks op het stage                 _root.brickamt--;                 //de score verhogen                 _root.score +=  10;             }         }         function makepowerup():void         {             //random plaatsen om te beslissen of er een power aangemaakt wordt             //en zo ja, welke             var getal = randomrange(1,40);             if (getal < 3)             {                 var power:power = new power();                 power.x = this.x + 35;                 power.y = this.y + 5;                 _root.addchild(power);             }             else if (getal < 6)             {                 var power2:power2 = new power2();                 power2.x = this.x + 35;                 power2.y = this.y + 5;                 _root.addchild(power2);             }             else if (getal < 9)             {                 var mario:enlarger = new enlarger();                 mario.x = this.x + 35;                 mario.y = this.y + 5;                 _root.addchild(mario);             }             else if (getal < 14)             {                 var power3:power3 = new power3();                 power3.x = this.x + 35;                 power3.y = this.y + 5;                 _root.addchild(power3);             }             else if (getal < 16)             {                 var fat:fatality = new fatality();                 fat.x = this.x + 35;                 fat.y = this.y + 5;                 _root.addchild(fat);             }             else if (getal < 20)             {                 var lifesteal:lifestealer = new lifestealer();                 lifesteal.x = this.x + 35;                 lifesteal.y = this.y + 5;                 _root.addchild(lifesteal);             }         }         function randomrange(minnum: number, maxnum:number):number         {             return (math.floor(math.random() * (maxnum - minnum + 1)) + minnum);         }      } } 

the error referring line 26:

if (this.hittestobject(_root.mcpaddle))

the error telling _root.mcpaddle null @ point in program.


Comments

Popular posts from this blog

php - cannot display multiple markers in google maps v3 from traceroute result -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -