【发布时间】:2015-09-10 18:27:40
【问题描述】:
我有一些球漂浮在屏幕上。当它们发生碰撞时,我会使用 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 个球时,它会停止播放,一段时间后它会重新开始(这些声音消失了)。不知怎的,他们冻僵了。
有没有办法解决这个问题?
【问题讨论】: