错误 #1009,即使在删除事件侦听器之后
error #1009, even after removing event listeners
在我制作的飞鸟游戏中,我之前遇到了error #1009
的问题。我在帧之间切换时通过 removeEventListeners
解决了一些问题,但仍然存在一些问题。Here's my file.。请帮忙。
问题出现在 slide
、obstposi
和 range
函数中。代码在这里:
slide
和 obstposi
函数:
var start = false;
stage.addEventListener(Event.ENTER_FRAME, slide);
stage.addEventListener(Event.ENTER_FRAME, obstposi);
function slide(event: Event) {
if (dead != true) {
p1.x -= 5;
p2.x -= 5;
p3.x -= 5;
p4.x -= 5;
p5.x -= 5;
p6.x -= 5;
p7.x -= 5;
p8.x -= 5;
scorein1.x -= 5;
scorein2.x -= 5;
scorein3.x -= 5;
scorein4.x -= 5;
}
if (flappy.hitTestObject(p1)) {
dead = true;
} else if (flappy.hitTestObject(p2)) {
dead = true;
} else if (flappy.hitTestObject(p3)) {
dead = true;
} else if (flappy.hitTestObject(p4)) {
dead = true;
} else if (flappy.hitTestObject(p5)) {
dead = true;
} else if (flappy.hitTestObject(p6)) {
dead = true;
} else if (flappy.hitTestObject(p7)) {
dead = true;
} else if (flappy.hitTestObject(p8)) {
dead = true;
}
}
function obstposi(event: Event) {
if (flappy.hitTestObject(scorein4)) {
scorein1.x = 702.3;
p1.x = 650;
p2.x = 650;
p1.y = Math.ceil(Math.random() * 300) + 305;
p2.y = p1.y - 335;
start = true;
} else if (flappy.hitTestObject(scorein1) && start == true) {
scorein2.x = 702.3;
p3.x = 650;
p4.x = 650;
p4.y = Math.ceil(Math.random() * -300) + 305;
p3.y = p4.y - 335;
} else if (flappy.hitTestObject(scorein2) && start == true) {
scorein3.x = 702.3;
p5.x = 650;
p6.x = 650;
p6.y = Math.ceil(Math.random() * -300) + 305;
p5.y = p6.y - 335;
} else if (flappy.hitTestObject(scorein3) && start == true) {
scorein4.x = 702.3;
p7.x = 650;
p8.x = 650;
p8.y = Math.ceil(Math.random() * -300) + 305;
p7.y = p8.y - 335;
}
}
range
函数:
stage.addEventListener(Event.ENTER_FRAME, range);
function range(event: Event) {
if (limit.hitTestObject(flappy)) {
flappy.x -= 2.5;
}
else if (wall.hitTestObject(flappy)) {
flappy.y += 20;
}
}
您的代码的问题在于,即使 flappy
、ground
等对象不存在于您的场景中,您仍使该功能起作用。因此,在开始之前,您可以添加 if(flappy != null)
以使您的代码仅在 flappy
出现在舞台上时才有效。
在我制作的飞鸟游戏中,我之前遇到了error #1009
的问题。我在帧之间切换时通过 removeEventListeners
解决了一些问题,但仍然存在一些问题。Here's my file.。请帮忙。
问题出现在 slide
、obstposi
和 range
函数中。代码在这里:
slide
和 obstposi
函数:
var start = false;
stage.addEventListener(Event.ENTER_FRAME, slide);
stage.addEventListener(Event.ENTER_FRAME, obstposi);
function slide(event: Event) {
if (dead != true) {
p1.x -= 5;
p2.x -= 5;
p3.x -= 5;
p4.x -= 5;
p5.x -= 5;
p6.x -= 5;
p7.x -= 5;
p8.x -= 5;
scorein1.x -= 5;
scorein2.x -= 5;
scorein3.x -= 5;
scorein4.x -= 5;
}
if (flappy.hitTestObject(p1)) {
dead = true;
} else if (flappy.hitTestObject(p2)) {
dead = true;
} else if (flappy.hitTestObject(p3)) {
dead = true;
} else if (flappy.hitTestObject(p4)) {
dead = true;
} else if (flappy.hitTestObject(p5)) {
dead = true;
} else if (flappy.hitTestObject(p6)) {
dead = true;
} else if (flappy.hitTestObject(p7)) {
dead = true;
} else if (flappy.hitTestObject(p8)) {
dead = true;
}
}
function obstposi(event: Event) {
if (flappy.hitTestObject(scorein4)) {
scorein1.x = 702.3;
p1.x = 650;
p2.x = 650;
p1.y = Math.ceil(Math.random() * 300) + 305;
p2.y = p1.y - 335;
start = true;
} else if (flappy.hitTestObject(scorein1) && start == true) {
scorein2.x = 702.3;
p3.x = 650;
p4.x = 650;
p4.y = Math.ceil(Math.random() * -300) + 305;
p3.y = p4.y - 335;
} else if (flappy.hitTestObject(scorein2) && start == true) {
scorein3.x = 702.3;
p5.x = 650;
p6.x = 650;
p6.y = Math.ceil(Math.random() * -300) + 305;
p5.y = p6.y - 335;
} else if (flappy.hitTestObject(scorein3) && start == true) {
scorein4.x = 702.3;
p7.x = 650;
p8.x = 650;
p8.y = Math.ceil(Math.random() * -300) + 305;
p7.y = p8.y - 335;
}
}
range
函数:
stage.addEventListener(Event.ENTER_FRAME, range);
function range(event: Event) {
if (limit.hitTestObject(flappy)) {
flappy.x -= 2.5;
}
else if (wall.hitTestObject(flappy)) {
flappy.y += 20;
}
}
您的代码的问题在于,即使 flappy
、ground
等对象不存在于您的场景中,您仍使该功能起作用。因此,在开始之前,您可以添加 if(flappy != null)
以使您的代码仅在 flappy
出现在舞台上时才有效。