我正在为学校制作一个小应用程序,你可以使用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:错误#1009:无法访问空对象引用的属性或方法。 在ballApp_Scene1_fla :: MainTimeline / moveBall()[ballApp_Scene1_fla.MainTimeline :: frame1:32)为什么?我该如何解决这个问题?
答案 0 :(得分:0)
由于cball是moveBall函数中使用的唯一对象,因此空指针异常意味着cBall尚未初始化。由于没有显示这部分,因此没有大的帮助..
但也许可以看看碰撞检测和
BitmapData Class
及其方法hittest:
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#hitTest%28%29
或DisplayObject Class
提供hitTestPoint和hitTestObject
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#hitTestObject%28%29
如果您可以使用图像数据和透明度制作不同的地图和对象,则处理比处理每个x和y坐标的硬编码更容易。