开发者问题收集

ActionScript3、Flash Punk 错误 #1009:无法访问空对象引用的属性或方法

2015-01-09
173

基本上我想使用 flashpunk 框架制作一个简单的测试游戏,但是当我刚开始时,我遇到了这个运行时错误:[Fault] 异常,信息 = TypeError:错误 #1009:无法访问空对象引用的属性或方法。 Fault,HandleInput() at Player.as:47

我知道这意味着我正在从空对象访问一个方法,但我在 Main.as 中初始化了播放器对象,并且在代码中没有看到任何错误,那么是什么导致了这种情况?

这是播放器类:`import net.flashpunk.utils.Input; import net.flashpunk.utils.Key; import net.flashpunk.Graphic; 导入 net.flashpunk.graphics.Image;

/**
 * ...Player class , manages physics , input and other stuff
 * @author Mohamed Atef
 */
public class Player extends PhysicsEntity
{
    //Input Variables

    //Movement Variables
    /**
     * The velocity by which the Player will move in the x-axis .
     */
    var movementVelocity : Number;

    //Embedding .
    [Embed(source = "../../Assets/Sprites/Player/Head.png")]
    private const sprite_IMG : Class;

    public function Player() 
    {
        x = 10;
        y = 10;
        graphic = new Image(sprite_IMG);
        enableGravity = true;
    }

    private function HandleInput():void
    {
        if (Input.check(Key.LEFT))
        {
            velocity.x = -movementVelocity;
        }
        else if (Input.check(Key.RIGHT))
        {
            velocity.x = movementVelocity;
        }
        else
        {
            velocity.x = 0;
        }
    }

    override public function update():void 
    {
        HandleInput();
        HandlePhysics();
    }

}`

下面是 Main.as,我在此创建播放器并将其添加到世界中。

import Classes.Entitys.Player;
import Classes.Levels.Level;
import flash.display.Sprite;
import flash.events.Event;
import net.flashpunk.Engine;
import net.flashpunk.FP;
import net.flashpunk.World;

/**
 * ...
 * @author Mohamed Atef
 */
public class Main extends Engine
{
    var player : Player;

    public function Main():void 
    {
        super(800, 600, 60, false);
        player = new Player();
        trace (player);
        FP.world = new Level();
    }

}

我对 ActionScript 3.0 和 flashpunk 还不熟悉,这是第一个项目,但我对编程并不陌生。

2个回答

看来你的错误是试图使用方法 Input.check - 检查对象或类 Input 是否不为空,你

Pedro Martins
2015-01-09

我找到了解决方案,一些变量为空,方法和播放器或输入对象无法处理它。

我有点被错误误导了,以为这意味着“函数”本身正在被
一个空对象调用,我想是因为我的第一个 AC3 项目和新的 FlashDevelop IDE(来自 C# visual studio)。

Mohamed Atef
2015-01-09