#1009错误Flash CC AS3

时间:2015-04-11 14:08:00

标签: actionscript-3 flash runtime-error

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

1 个答案:

答案 0 :(得分:0)

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