#1009 错误闪存 CC AS3



我一直在用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;

其余变量位于顶部 f 帧上的操作。

任何帮助不胜感激,谢谢。

编辑
这是我的变量定义;

//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;
        }
    }

发现问题。在使用变量定义创建计时器之前,我不小心将事件侦听器添加到计时器。为什么这会在更新函数中抛出错误,这是一个完全不同的侦听器,超出了我的范围。但它现在已经修复了。
谢谢大家!

最新更新