我正在编写一个Flash游戏,其中球击中了一个影片剪辑对象,这会将用户带到一个新的场景。 我有3个主要方法: movePaddle,moveBall和changeFrame。
它运行正常但是当我执行changeFrame方法(球击中影片剪辑)转到新框架时,我得到整页1009错误:
TypeError:错误#1009:无法访问空对象引用的属性或方法。
at FlashGameNEW_fla::MainTimeline/changeFrame()
TypeError:错误#1009:无法访问空对象引用的属性或方法。
at FlashGameNEW_fla::MainTimeline/movePaddle()
TypeError:错误#1009:无法访问空对象引用的属性或方法。
at FlashGameNEW_fla::MainTimeline/moveBall()
重复多次。
非常感谢任何帮助。 感谢。
编辑:代码如下
function beginCode():void{
mcPaddle.addEventListener(Event.ENTER_FRAME, movePaddle);
mcBall.addEventListener(Event.ENTER_FRAME, moveBall);
mcBall.addEventListener(Event.ENTER_FRAME, changeFrame);
}
function movePaddle(event:Event):void{
mcPaddle.x = mouseX - mcPaddle.width / 2;
if(mouseX < mcPaddle.width / 2){
//Keep the paddle on stage
mcPaddle.x = 0;
}
if(mouseX > stage.stageWidth - mcPaddle.width / 2){
mcPaddle.x = stage.stageWidth - mcPaddle.width;
}
}
function changeFrame(event:Event):void{
if (mcBall.hitTestObject(Northcote)) {
this.gotoAndPlay(3);
}
}
答案 0 :(得分:1)
问题是你在第3帧中没有mcPaddle和mcBall的实例(例如,它们现在不是创建的,将在稍后创建)。检查现有实例:
function movePaddle(event:Event):void {
if (!mcPaddle)
return;
mcPaddle.x = mouseX - mcPaddle.width / 2;
if(mouseX < mcPaddle.width / 2){
//Keep the paddle on stage
mcPaddle.x = 0;
}
if(mouseX > stage.stageWidth - mcPaddle.width / 2) {
mcPaddle.x = stage.stageWidth - mcPaddle.width;
}
}
function changeFrame(event:Event):void{
if (mcBall && Northcote && mcBall.hitTestObject(Northcote)) {
this.gotoAndPlay(3);
}
}