0

我正在编写一个 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);  
              }
              
}
4

1 回答 1

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);  
    }    
}
于 2013-01-16T08:07:28.913 回答