0

ゲーム中に音を鳴らしたいのですが。しかし、アプリを起動すると、毎回0.5秒間しか音が鳴りません。

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Shapes shapes = new Shapes(this);
    setContentView(shapes);
    MediaPlayer mp = MediaPlayer.create(this, R.raw.back);
    try {
        mp.prepare();
    } catch (IllegalStateException e) {}
      catch (IOException e) {}
    mp.start();
    mp.setLooping(true);
}

mp.setLooping(true)は役に立ちません。「setContentView(shapes);」を削除した場合にのみ機能します。0.5秒経っても音が止まらないようにするにはどうすればよいですか?

4

4 に答える 4

0

MediaPlayer オブジェクト ( mp) は、次の場合に 1 回再生されmp.start()ます。

続けてプレイする場合は、 を追加しsetLooping(true)ます。

MediaPlayer mp = MediaPlayer.create(this, R.raw.back);
try {
    mp.prepare();
    mp.setLooping(true);
    mp.start();
} catch (IllegalStateException e) { 
    e.printStackTrace();
} catch (IOException e) {
   e.printStackTrace();
}
于 2013-03-09T10:20:36.490 に答える
0

これがゲームの場合は、スレッドで実行されると想定しています。あなたのゲームはスレッドで実行されますか?

スレッドには、MediaPlayer が既に宣言されている doStart() または同様のメソッドが必要です。

ゲーム スレッドでバックグラウンド ミュージックを開始するための省略された基本的な例:

ブール BGMisOn; MediaPlayer BGM;

doStart() { ... ... if(BGMisOn)BGM.start() ... ... }

于 2013-03-09T11:10:04.567 に答える
0

音が短い場合はループを追加

mp.setLooping(true);

また、タイトルでonDraw()方法について言及しましたが、あなたが与えるgoはからですonCreate()

于 2013-03-09T10:11:41.993 に答える
0

setLooping(true) http://developer.android.com/reference/android/media/MediaPlayer.html#setLooping(boolean)を使用できます

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Shapes shapes = new Shapes(this);
        setContentView(shapes);
        MediaPlayer mp = MediaPlayer.create(this, R.raw.back);
        try {
            mp.prepare();
        } catch (IllegalStateException e) {}
          catch (IOException e) {}
        mp.setLooping(true);
        mp.start();
    }
于 2013-03-09T10:15:16.260 に答える