开发者

ActionScript 3.0 Error #1009: Cannot access a property or method of a null object reference

For my first project in flash I decided to make a little football game. It was working whenever I was identifying each individual object but then since I wanted to add more little AI players, I tried to make the movement work with some Arrays containing the objects but then it returned this error message. Any help?

function movers(event:Event):void
{
  for (var qwerty:int=0;qwerty<=(ALIEN.length);qwerty++) {
    var run:Object=ALIEN[qwerty];
    run.rotation=Math.atan2(bc.y-run.y,bc.x-run.x)/(Math.PI/180);
    run.x+=Math.cos(sym.rotation*Math.PI/180)*SPD;
    run.y+=Math.sin(sym.rotation*Math.PI/180)*SPD;
  }

  if (ftblFLY) {
    ftbl.x+=Math.cos(ftbl.rotation*Math.PI/180)*7;
    ftbl.y+=Math.sin(ftbl.rotation*Math.PI/180)*7;
  }

  for (var wer:int=0;wer<=(team.length);wer++) {
    if (ftbl.hitTestObject(wer)) {
      if (wer!=bc) {
        bc=wer;
        ftblFLY=false;
      }
    }
  }

  if (bc!=wr) {
    wr.x+=Math.cos(wr.rotation*Math.PI/180)*SPD;
    wr.y+=Math.sin(wr.rotation*Math.PI/180)*SPD;
  }

  for (var asdf:int=0;qwerty<=(ALIEN.length);asdf++) {
    var runner:Object=ALIEN[asdf];
    if (runner.hitTestObject(bc)) {
      stage.removeEventListener(Event.ENTER_FRAME,movers);
      stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyers);
      stage.removeEventListener(MouseEvent.CLICK,clicko);
      texter.text="Tackled!!!";
    }
  }

  bc.x+=Math.cos(bc.rotation*Math.PI/180)*(SPD*playaRD);
  bc.y+=Math.sin(bc.rotation*Math.PI/180)*(SPD*playaRD);
  bc.rotation=bc.rotation+(turno*playaTD);

  ftbl.rotation=bc.rotation;
  ftbl.x=bc.x;
  ftbl.y=bc.y;

  if (bc.y<=0) {
    stage.remov开发者_Python百科eEventListener(Event.ENTER_FRAME,movers);
    stage.removeEventListener(KeyboardEvent.KEY_DOWN,keyers);
    stage.removeEventListener(MouseEvent.CLICK,clicko);
    texter.text="Touchdown!!!";
  }
}


should be < ALIEN.length not <= same with wer

something like this:

for (var qwerty:int=0;qwerty<(ALIEN.length);qwerty++) {

for (var wer:int=0;wer<(team.length);wer++) {

for (var asdf:int=0;qwerty<(ALIEN.length);asdf++) {

lets say you have an array x of 10 objects then your

x.length is 10
but your array will start at 0 so you will have values from
x[0] to x[9]
therefore, if you do:
for (var i:int=0;i<=(x.length);i++) {
you wont get a value for x[10] and it so you get a null object reference error.


Your coding conventions make your code difficult to understand...

Did you initialize your ALIEN[] array outside of your function, or your for loop? If you didn't, Flash will throw the error you're seeing. You can't use a variable until you initialize it.

If you haven't, you can either use

var ALIEN:Array = new Array();

or

var ALIEN:Array = [];

As you progress, you may want to look into Vectors, which offer some advantages in iteration.

Good luck!

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜