【问题标题】:MediaPlayer - creating more than one instance?MediaPlayer - 创建多个实例?
【发布时间】: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 个球时,它会停止播放,一段时间后它会重新开始(这些声音消失了)。不知怎的,他们冻僵了。

有没有办法解决这个问题?

【问题讨论】:

    标签: java android


    【解决方案1】:

    好的,我再次需要在发帖前多考虑一下。将 catchMP = create(resources) 移至构造函数。不知道,为什么我在这里宣布它。完美运行:)

    谢谢!

    【讨论】:

      猜你喜欢
      • 2017-03-30
      • 2018-07-11
      • 2017-11-15
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多