Search code examples
actionscript-3flashsprite

TypeError:Error#1009:Cannot access a property or method of a null object reference as3


code:

import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.Stage;

stage.addEventListener(KeyboardEvent.KEY_UP,released);
stage.addEventListener(KeyboardEvent.KEY_DOWN,pressed);
addEventListener(Event.ENTER_FRAME,loop);

var isRight = false;
var isLeft = false;
var isSpace = false;
var gravity = 10;

function  released(event:KeyboardEvent)
{
    if(event.keyCode == Keyboard.RIGHT){
        isRight = false;
    }
    if(event.keyCode == Keyboard.LEFT){
        isLeft = false;
    }
}
function  pressed(event:KeyboardEvent)
{
    if(event.keyCode == Keyboard.RIGHT){
        isRight = true;
    }
    if(event.keyCode == Keyboard.LEFT){
        isLeft = true;
    }
    if(event.keyCode == Keyboard.SPACE){
        isSpace = true;
    }
}

function loop(e:Event)
{
    if(player.y <= 496){
        player.y += gravity;
    }
    if(isRight){
        player.x += 10;
    }
    if(isLeft){
        player.x += 10;
    }
    if(isSpace){
        if(player.y >= 466){
            player.y -= 1;
            gravity = -10;
        }
        else{
            gravity = gravity * -1;
            isSpace = false;
        }
    }
}

full error is:

TypeError: Error #1009: Cannot access a property or method of a null object reference. at Untitled_2_fla::MainTimeline/loop()[Untitled_2_fla.MainTimeline::frame1:38]

I don't understand what it's trying to tell me. Plz help. Thanks.


Solution

  • I think the loop function is called before the player object is initialized. so you should added the little code. refer a this.

    function loop(e:Event)
    {
        if(!player) return;
    
        if(player.y <= 496){
            player.y += gravity;
        }
        if(isRight){
            player.x += 10;
        }
        if(isLeft){
            player.x += 10;
        }
        if(isSpace){
            if(player.y >= 466){
                player.y -= 1;
                gravity = -10;
            }
            else{
                gravity = gravity * -1;
                isSpace = false;
            }
        }
    }