Flash 类型错误为1009空对象引用gameLoop()的问题

Flash 类型错误为1009空对象引用gameLoop()的问题,flash,object,null,adobe,Flash,Object,Null,Adobe,我的闪存代码有问题。我正在做一个简单的丢球游戏,我不断地犯这个错误 TypeError:错误#1009:无法访问空对象引用的属性或方法。 在balldrop_fla::MainTimeline/gameLoop()[balldrop_fla.MainTimeline::frame1:46] 它似乎在谈论第46行,即“ball.y+=5 这是我的密码: import flash.display.DisplayObject; import flash.geom.Rectangle; impor

我的闪存代码有问题。我正在做一个简单的丢球游戏,我不断地犯这个错误

TypeError:错误#1009:无法访问空对象引用的属性或方法。 在balldrop_fla::MainTimeline/gameLoop()[balldrop_fla.MainTimeline::frame1:46]

它似乎在谈论第46行,即“ball.y+=5

这是我的密码:

 import flash.display.DisplayObject;
 import flash.geom.Rectangle;
 import flash.events.Event;
 import flash.display.MovieClip;


var points:Array = new Array(10,20,30,40,-50)
var ball:DisplayObject;
var randBall:Number;
var score:Number=0;
var rect:Rectangle=new Rectangle(0+(basket_mc.width/2), basket_mc.y,stage.stageWidth-  basket_mc.width, 0);
basket_mc.startDrag(true, rect);

basket_mc.addEventListener(Event.ENTER_FRAME, gameLoop);

function makeBall():void
{
randBall=Math.floor(Math.random()*5);

switch(randBall)
{
    case 0:
        ball=addChild(new ball0_mc());
    break;
    case 1:
        ball=addChild(new ball1_mc());
    break;
    case 2:
        ball=addChild(new ball2_mc());
    break;
    case 3:
        ball=addChild(new ball3_mc());
    break;
    case 4:
        ball=addChild(new ball4_mc());
    break;
}
ball.x=Math.floor(Math.random()*stage.stageWidth-ball.width);
ball.y=-60;
}

function gameLoop(evt:Event):void
 {
score_txt.text=score.toString();
ball.y += 5;

if(ball.y>stage.stageHeight + ball.height)
{
    removeChild(ball);
    makeBall();
}
if(ball.hitTestObject(basket_mc))
{
    score += points[randBall];
    removeChild(ball);
    makeBall();
}
 }

makeBall();

我看到的第一件事是,在使用makeBall()稳定球之前,可能会调用ENTER_FRAME的侦听器。我会在makeBall之后为ENTER\u FRAME添加侦听器。

您必须尝试添加

stop();
在脚本的末尾。然后时间线结束并从头开始播放,flash重新创建场景中的所有对象,球变为空

你确定以后

randBall=Math.floor(Math.random()*5)

例如,randBall将0改为0.000000001?这里更好的方法是将randBall的类型改为int而不是Number