0

ボタンを押すたびに JMF を使用してサウンドを再生しようとしています。

これは、メディアプレーヤーを構築するために必要なものです。

MediaPlayer mp = new javax.media.bean.playerbean.MediaPlayer();
mp.setMediaLocation("file:///D:/fall.wav");
mp.setPlaybackLoop(false);

そして、サウンドを一度再生するには、

mp.start();
mp.setMediaTime(new Time(0));
mp.stop();

初めてサウンドを再生すると、

javax.media.NotRealizedError: Cannot set media time on a unrealized controller 

Exception in thread AWT-EventQueue-0" javax.media.NotRealizedError: 
  Cannot set media time on a unrealized controller 

setMediaTime 行で。これは、音を出すボタンを押した後は発生しません。最初にのみ発生します。コンストラクターを変更して追加すると

mp.realize();

最後に、それらのエラーはスローされませんが、最初はサウンドも再生されません。

これを修正するにはどうすればよいですか?

4

1 に答える 1

1

mp.start()非同期です。そのため、 を呼び出しmp.setMediaTime(new Time(0)); た直後に呼び出すstart()と、プレーヤーはまだ認識されていません。を追加してControllerListener、そのイベントを聞くことができます。を取得したらRealizedEvent、メディア タイムを設定します。最初に呼び出しmp.realize()、イベントの取得時にメディア時間を設定してから呼び出すことをお勧めします。start()

于 2012-06-11T05:37:54.973 に答える