我在屏幕上浮动了一些球。当它们发生碰撞时,我会用MediaPlayer播放声音。
public static MediaPlayer create(Resources resources ) {
try {
AssetFileDescriptor afd = resources.openRawResourceFd(R.raw.collide);
MediaPlayer mp = new MediaPlayer();
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
mp.prepare();
return mp;
} catch (IOException ex) {
Log.d("", "create failed:", ex);
// fall through
} catch (IllegalArgumentException ex) {
Log.d("", "create failed:", ex);
// fall through
} catch (SecurityException ex) {
Log.d("", "create failed:", ex);
// fall through
}
return null;
}
private void moveBalls(){ //
for (int i = 0; i < balls.size(); i++) {
Ball ball1 = balls.get(i);
for (int a = i + 1; a < balls.size(); a++) {
Ball ball2 = balls.get(a);
if(ball1.isColliding(ball2)){
ball1.Collide(ball1,ball2);
catchMP = create(resources);
catchMP.start();
}
}
}
for(Ball ball : balls){
ball.step();
}
}
我已经尝试过.stop,.release方法,检查它是否为空 - 一切。
因此。当有两个四球时,一切都很好,它会正常播放。当有6-100个球停止播放时,一段时间后它再次开始(这些声音已经消失)。他们以某种方式冻结。
有没有办法解决这个问题?