类型错误:错误#1009无法找到空对象
问题描述:
我得到这个真的很烦错误 “类型错误:错误#1009:在monke2_fla无法访问空对象引用的属性或方法 :: MainTimeline/UPDATE2()” 我找不到NULL var,除了#1009错误之外,任何帮助都会很棒,因为脚本工作正常。类型错误:错误#1009无法找到空对象
var randomX:Number = Math.random() * 800;
Banana_mc1.x = randomX;
Banana_mc1.y = 0;
var speed:Number = 10;
var speed2:Number = 5;
var speed3:Number = 2;
var speed4:Number = 6;
Banana_mc1.addEventListener(Event.ENTER_FRAME, moveDown);
var playerScore:int = 0;
var stopLoop = 0;
if (stopLoop == 1) { } else {
function moveDown(e:Event):void
{
Banana_mc1.y += speed;
Banana_mc2.y += speed2;
Banana_mc3.y += speed3;
Banana_mc4.y += speed3;
Banana_mc5.y += speed;
Banana_mc6.y += speed4;
Snake_mc1.y += speed2;
Bunch.y += speed3;
Snake_mc2.y += speed3;
}
}
// KEYS
stage.addEventListener (KeyboardEvent.KEY_DOWN, myFunction) ;
//Monkey.addEventListener(Event.ENTER_FRAME, update);
function myFunction (event: KeyboardEvent)
{
if(event.keyCode == Keyboard.LEFT)
Monkey.x -= 10;
if(event.keyCode == Keyboard.RIGHT)
Monkey.x += 10;
}
var hitAry:Array = [Banana_mc1,Banana_mc2,Banana_mc3,Banana_mc4,Banana_mc5,Banana_mc6];
var hitAry2:Array = [Snake_mc1,Snake_mc2];
stage.addEventListener(Event.ENTER_FRAME, update2);
function update2(e:Event):void
{
var hitAry:Array = [Banana_mc1,Banana_mc2,Banana_mc3,Banana_mc4,Banana_mc5,Banana_mc6];
var hitAry2:Array = [Snake_mc1,Snake_mc2];
for (var i:int=0; i < hitAry.length; i++) {
if (Monkey.hitTestObject(hitAry[i])) {
trace("HIT");
hitAry[i].parent.removeChild(hitAry[i]);
trace(hitAry[i]);
playerScore+=1;
playerScoreText.text = ("" + playerScore);
} else {
trace("MISS"); }
if (Floor.hitTestObject(hitAry[i])) {
trace("HIT The Floor");
hitAry[i].gotoAndPlay(35);
stopLoop = 1;
} else {
trace("MISS"); }
}
for (var b:int=0; b < hitAry2.length; b++) {
if (Monkey.hitTestObject(hitAry2[b])) {
Monkey.Head.gotoAndPlay(23);
trace("HIT");
hitAry2[b].parent.removeChild(hitAry2[b]);
playerScore-=1;
if (playerScore <= 0) { playerScore = 0; }
playerScoreText.text = ("" + playerScore);
} else {
trace("MISS"); }
}
if (Monkey.hitTestObject(allleft)) {
Monkey.Head.gotoAndPlay(23);
trace("BITE");
playerScore-=100;
if (playerScore <= 0) { playerScore = 0; }
playerScoreText.text = ("" + playerScore);
} else {
trace("NO BITE"); }
if (Monkey.hitTestObject(allright)) {
Monkey.Head.gotoAndPlay(23);
trace("BITE");
playerScore-=100;
if (playerScore <= 0) { playerScore = 0; }
playerScoreText.text = ("" + playerScore);
} else {
trace("NO BITE"); }
if (Monkey.hitTestObject(Bunch)) {
trace("HIT BUNCH");
Bunch.parent.removeChild(Bunch);
playerScore+=10;
playerScoreText.text = ("" + playerScore);
}
}
这是一个任务就是在到期我打砖墙,在此先感谢
- 切尔西
答
好,靠近你的代码的底部,你说:Bunch.parent.removeChild(Bunch);
但是你也有:Banana_mc1.addEventListener(Event.ENTER_FRAME, moveDown);
它调用一个函数,保持引用Bun ch。
您可以通过不删除束来测试。如果修复了null var问题,那么你将不得不决定如何继续。你想让游戏继续或结束后束消失?
再就是也是这个:
hitAry[i].parent.removeChild(hitAry[i]);
trace(hitAry[i]);
你试图跟踪它,你删除它之后! 那 mightmake hitAry [i] null!
+0
这不会使'hitAry [i]'无效,但是如果'hitAry'中的某个元素没有添加到stage(或刚刚从其父元素中移除),则其“parent”属性为null。这很可能是OP的错误,尽管碰到'Bunch'可能会产生相同的结果。 – Vesper
这还不够远。不幸的是,这是时间轴编码的缺陷。这可能是因为您的任何数量的影片剪辑/显示对象或儿童未正确设置。确保你的实例名称是正确的。检查你的父/子层次结构,确保像“Bunch.parent”这样的东西实际上有一个父对象。添加跟踪语句以确定在抛出错误之前运行的最后一件事情。 –