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