Asdfnl
%Europe/Berlin %679 %2008, 16:19
Ik ben bezig met een Flashgame.
Op de een of andere manier blijft deze error steeds terugkomen.
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Guns::Bullet1/moveMe()
at flash.utils::Timer/flash.utils:Timer::_timerDispatch()
at flash.utils::Timer/flash.utils:Timer::tick()
Ik heb alle mogelijke vars al getraced, om ergens null te vinden. Misschien iemand van jullie een idee?
package Guns{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.DisplayObject;
import flash.geom.Point;
//import
public class Bullet1 extends MovieClip {
var r:Number;// richting in radialen
var n:Number;// kracht in radialen
var timer:Timer;
var colPoint:Point;
var reef:MovieClip;
var eA:Array;
public function Bullet1(X:Number,Y:Number,z:Number,reef1:MovieClip ,EA:Array) {
rotation += z - rotation/2;
r = (z/180*Math.PI);
x = Math.cos(r)*30+X;
y = Math.sin(r)*30+Y;
n = 20;
reef=reef1;
eA = EA;
colPoint = new Point(0,0);
timer = new Timer(50);
timer.addEventListener(TimerEvent.TIMER, moveMe);
timer.start();
}
public function moveMe(e:TimerEvent) {
x += Math.cos(r)*n;
y += Math.sin(r)*n;
//x += 5;
//y += Math.sin(x)+100;
//x+=1;
if (x > stage.stageWidth || x < 0 || y > stage.stageHeight || y < 0) {
// if you want to delete an object, stop all timerinstances related to the object, else you'll get errors..
timer.stop();
stage.removeChild(this);
}
if (reef.hitTestPoint(this.localToGlobal(colPoint).x, this.localToGlobal(colPoint).y ,true)) {
timer.stop();
stage.removeChild(this);
}
var lA:Number = eA.length;
for (var i = 0; i<lA; i++) {
if (eA[i].hitTestObject(this)) {
eA[i].killMe();
stage.removeChild(this);
timer.stop();
break;
}
}
}
}
}
het volgende probleem:
ik laat 3 enemies spawnen om te testen. deze worden bijgehouden in een array en gespliced als ze gehit worden.
public function killMe(){
health -=10;
if(health == 0){
eA.splice(aN,1);
gotoAndStop(2);
//parent.removeChild(this);
//y = 1000;
}
if(y<this.y){
timer.stop();
}
}
zoals de splice nu staat (aN,1) kun je de 1e enemy niet hitten. Als ik er (aN,0) van maak kun je alle enemies hitten maar worden ze niet gespliced... (aN is het array nummer van de enemy).
graag uw ideeen hierover:D
Ciao
Tim
Op de een of andere manier blijft deze error steeds terugkomen.
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Guns::Bullet1/moveMe()
at flash.utils::Timer/flash.utils:Timer::_timerDispatch()
at flash.utils::Timer/flash.utils:Timer::tick()
Ik heb alle mogelijke vars al getraced, om ergens null te vinden. Misschien iemand van jullie een idee?
package Guns{
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.DisplayObject;
import flash.geom.Point;
//import
public class Bullet1 extends MovieClip {
var r:Number;// richting in radialen
var n:Number;// kracht in radialen
var timer:Timer;
var colPoint:Point;
var reef:MovieClip;
var eA:Array;
public function Bullet1(X:Number,Y:Number,z:Number,reef1:MovieClip ,EA:Array) {
rotation += z - rotation/2;
r = (z/180*Math.PI);
x = Math.cos(r)*30+X;
y = Math.sin(r)*30+Y;
n = 20;
reef=reef1;
eA = EA;
colPoint = new Point(0,0);
timer = new Timer(50);
timer.addEventListener(TimerEvent.TIMER, moveMe);
timer.start();
}
public function moveMe(e:TimerEvent) {
x += Math.cos(r)*n;
y += Math.sin(r)*n;
//x += 5;
//y += Math.sin(x)+100;
//x+=1;
if (x > stage.stageWidth || x < 0 || y > stage.stageHeight || y < 0) {
// if you want to delete an object, stop all timerinstances related to the object, else you'll get errors..
timer.stop();
stage.removeChild(this);
}
if (reef.hitTestPoint(this.localToGlobal(colPoint).x, this.localToGlobal(colPoint).y ,true)) {
timer.stop();
stage.removeChild(this);
}
var lA:Number = eA.length;
for (var i = 0; i<lA; i++) {
if (eA[i].hitTestObject(this)) {
eA[i].killMe();
stage.removeChild(this);
timer.stop();
break;
}
}
}
}
}
het volgende probleem:
ik laat 3 enemies spawnen om te testen. deze worden bijgehouden in een array en gespliced als ze gehit worden.
public function killMe(){
health -=10;
if(health == 0){
eA.splice(aN,1);
gotoAndStop(2);
//parent.removeChild(this);
//y = 1000;
}
if(y<this.y){
timer.stop();
}
}
zoals de splice nu staat (aN,1) kun je de 1e enemy niet hitten. Als ik er (aN,0) van maak kun je alle enemies hitten maar worden ze niet gespliced... (aN is het array nummer van de enemy).
graag uw ideeen hierover:D
Ciao
Tim