我一直在使用flash as3中的游戏,它完美地工作,直到我重新排列顶部的所有变量,使其更容易阅读。现在,调试器在运行时为许多变量抛出了错误1009,尽管它们的定义没有改变。
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Main_fla::MainTimeline/Update()[Main_fla.MainTimeline::frame3:201]
错误指向我:
if (S) {
legRot = 180;
}
尽管S和legRot都被定义为;
var legRot:Number = 0;
和
var S:Boolean = false;
其余变量位于框架上的动作顶部。
感谢任何帮助, 谢谢。
修改
这是我的变量定义;
//Numbers
var currentAmmo = 1;
var xVel = 0;
var yVel = 0;
var xCollision = 0;
var yCollision = 0;
var enemySpeed = 4;
var ExplodeOnce = 0;
var EnemyWalking = 0;
var legRot = 0;
var dropxVel: Number = 0;
var dropyVel: Number = 0;
var E = 0;
//Booleans
var A:Boolean = false;
var W:Boolean = false;
var S:Boolean = false;
var D:Boolean = false;
var SHIFT:Boolean = false;
var Q:Boolean = false;
var dead = false;
这是发生错误的地方;
if (W) {
legRot = 0;
}
if (A) {
legRot = -90;
}
if (S) {
legRot = 180;
}
if (D) {
legRot = 90;
}
if (A && W) {
legRot = -45
};
if (W && D) {
legRot = 45
};
if (D && S) {
legRot = 115
};
if (S && A) {
legRot = -115
};
if (!dead){
player.TopBody.rotation = Math.atan2(mouseY - player.y, mouseX - player.x) * 180 / Math.PI + 90;
if (!W && !A && !S && !D) {
player.BottomLegs.gotoAndStop(1);
player.BottomLegs.rotation = Math.atan2(mouseY - player.y, mouseX - player.x) * 180 / Math.PI + 90;
} else {
player.BottomLegs.play();
player.BottomLegs.rotation += (legRot - player.BottomLegs.rotation) / 4;
}
}
答案 0 :(得分:0)
发现问题。在使用变量定义创建计时器之前,我偶然向计时器添加了一个事件监听器。为什么这会在更新函数中抛出错误,这是一个完全不同的监听器,超出了我的范围。但它现在已经修好了。
谢谢大家!