我正在写一个游戏,你一直按下屏幕让直升机飞起来。现在,当直升机与屏幕边界(单个设备的高度和宽度)发生碰撞时,活动结束
((Activity) context).finish();
当玩家在碰撞后快速停止时,它可以完美地运行,但是如果他坚持下去,我就会受到讨厌的错误。
Thant是我怀疑onTouchEvent方法
的原因@Override
public boolean onTouchEvent(MotionEvent event) {
// background music
mp.start();
mp.setLooping(true);
copter.setVolume((float) 0.2, (float) 0.2);
if (event.getAction() == MotionEvent.ACTION_DOWN && fuel > 0) {
copter.start();
copter.setLooping(true);
if (!player.getPlaying()) {
player.setPlaying(true);
player.setUp(true);
fuel--;
} else {
player.setUp(true);
fuel--;
}
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP) {
copter.pause();
player.setUp(false);
return true;
}
return super.onTouchEvent(event);
}
碰撞后有没有办法忽略TouchEvents?或者OnTouchEvent甚至不是问题吗?
答案 0 :(得分:0)
检查onTouchEvent()
这里是代码:
@Override
public boolean onTouchEvent(MotionEvent event) {
Activity activity = getActivity();
if(activity != null){
// background music
mp.start();
mp.setLooping(true);
copter.setVolume((float) 0.2, (float) 0.2);
if (event.getAction() == MotionEvent.ACTION_DOWN && fuel > 0) {
copter.start();
copter.setLooping(true);
if (!player.getPlaying()) {
player.setPlaying(true);
player.setUp(true);
fuel--;
} else {
player.setUp(true);
fuel--;
}
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP) {
copter.pause();
player.setUp(false);
return true;
}
return super.onTouchEvent(event);
}
//return super.onTouchEvent(event);
return false;
}
根据您的代码,您应该使用:
if(((Activity)context) != null){
而不是
Activity activity = getActivity();
if(activity != null){
如果这不是问题,请添加错误堆栈跟踪。
<强>更新强>
通过电子邮件发送堆栈跟踪:
Intent mailIntent = new Intent(Intent.ACTION_SENDTO);
mailIntent.setData(Uri.parse("mailto:"));
mailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"mail@gmail.com"});
mailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
mailIntent.putExtra(Intent.EXTRA_TEXT, stacktraceText);
Intent mailChooserIntent = Intent.createChooser(mailIntent, "Title");
context.startActivity(mailChooserIntent);