0

我正在为学校制作一个小应用程序,您可以在其中使用 Acceleropmeter(用于智能手机)控制球,我想要这样,如果球达到某个 Y 坐标,您会输掉并转到另一帧(它说您有输掉比赛)。'已经完成了球,到目前为止的代码是这样的:

var fl_Accelerometer:Accelerometer = new Accelerometer();
fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler);

function fl_AccelerometerUpdateHandler(event:AccelerometerEvent):void
{
cBall.x -=  event.accelerationX * 40;
cBall.y +=  event.accelerationY * 40;
}

cBall.addEventListener(Event.ENTER_FRAME, moveBall);
function moveBall(evt:Event){

// this is to stop the ball when it tries to exit the sreen 

if(cBall.x > (480-cBall.width/2)){
    cBall.x = 480-cBall.width/2;
}
    // except for this, that stops the ball not if it touches the end of the screen, but if it reaches a certain Y coordinate
if(cBall.y > (780-cBall.width/2)){
   gotoAndStop(3);
}
if(cBall.x < (0+cBall.width/2)){
    cBall.x = 0+cBall.width/2;
}
if(cBall.y < (0+cBall.width/2)){
    cBall.y = 0+cBall.width/2;
}
}

每当我尝试该应用程序时,它都会显示第 32 行有错误(TypeError: Error #1009: Cannot access a property or method of a null object reference. at ballApp_Scene1_fla::MainTimeline/moveBall()[ballApp_Scene1_fla.MainTimeline::帧 1:32) 为什么?我怎样才能解决这个问题?

4

1 回答 1

0

由于 cball 是 moveBall 函数中使用的唯一对象,因此空指针异常意味着 cBall 尚未初始化。由于未显示这部分,因此没有太大的帮助..

但也许看看碰撞检测和

另一个试图做类似事情的人: BitmapData Collision

于 2012-04-28T21:53:22.657 回答