我有一些球漂浮在屏幕上。当它们发生碰撞时,我会用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方法,检查它是否为空-所有内容。
所以。当有2-4个球的时候,一切都很好,一切正常。当有6-100个球时,它停止播放,一段时间后,它再次开始(这些声音消失了)。不知何故,他们都快冻死了。
有什么办法可以解决这个问题吗?
发布于 2015-09-10 18:27:41
好的,所以在发帖之前,我需要再想一想。已将catchMP =create(资源)移动到构造函数。不知道,为什么我在这里宣布它。完美工作:)
谢谢!
https://stackoverflow.com/questions/32499049
复制相似问题