我已经尝试了很多小时,编码和搜索我的问题的解决方案没有任何效果。
错误:TypeError:错误 #1009:无法访问空对象引用的属性或方法。
简介:我正在创建一个游戏,一直在开发一个随机间隔的背景云生成器,其中一个想法是让云在她的寿命达到 0 后消失(我们从 100 倒计时到 0)。项目为 30 FPS。有趣的是,导致错误的云消失了(也许它仍然存在,但 alpha 为 0?)但是下一个云,不给出任何错误,一切正常。
所以现在是一些代码和解释的时候了:
GAME CLASS - 文档类
// VARIABLES
var clouds:Clouds = new Clouds();
static var cloudsTimerDelay:Number = 3000;
static var cloudsTimer:Timer = new Timer(cloudsTimerDelay);
// CONSTRUCTOR
cloudsTimer.addEventListener("timer", spawnCloud);
cloudsTimer.start();
// CALLED FUNCTION
function spawnCloud(e:Event){
stage.addChildAt(new Clouds,1);
}
云级
// VARIABLES
var fadeSpeed:Number = 0.05;
var lifeSpan:Number = 100;
// CONSTRUCTOR
addEventListener("enterFrame", enterFrame);
// CALLED FUNCTIONS
function enterFrame(e:Event)
{
this.lifeSpan--;
this.x += this.velocity;
if (this.lifeSpan < 0)
{
this.alpha -= this.fadeSpeed;
if (this.alpha <= 0)
{
kill(); // ERROR IN THIS FUNCTION
}
}
}
function kill()
{
removeEventListener("enterFrame", enterFrame);
stage.removeChild(this); // ERROR ERROR ERROR
}
我在上面标记了错误位置,它是导致问题的 stage.removeChild(this) (这就是调试器所说的)。这段代码的主要思想是在设置的时间间隔(计时器部分)上在舞台上创建对象,当它被创建时,对象开始是它自己的 enterFrame 函数。它用于移动云,每帧从生命周期中减去1,当它达到0时,淡入淡出以恒定值改变alpha值,当alpha低于0时,kill函数应该进入,摆脱事件监听器和从舞台上删除云。任何想法为什么会发生此错误?我将非常感谢任何解决方案!如果我写得不好,我也非常抱歉,但这是我在 Stack 上的第一篇文章 :)
干杯!