音声データを再生するのは非常に簡単です。
Appletクラスに用意された play()メソッドを呼び出すだけです。
play()メソッドには音声データのファイルの URL を指定しますが、
そのルールは
getImage()の場合と
同じです。
String source = getParameter("source"); // 音声データのソース名
if( source != null )
play( getDocumentBase(), source );
else
play( getCodeBase(), "default.au" );
play()メソッドの処理は独立したスレッドによって、
アプレットの他の処理と並列して行われます。
プログラム内で特別な工夫を行わなくても、自動的にバックグラウンドでの
再生が可能になるわけです。
マシンの処理能力が許せば、複数の play()メソッドが独立して音声の
再生を行うことも可能です。
今度は単純に再生するのではなく、BGM としてエンドレスに流す機能を考えます。
Appletパッケージの中の AudioClipクラスのオブジェクトが必要です。
そのために Appletクラスのメソッド getAudioClip()を用います。
データファイルの URL を指定して AudioClip のオブジェクトを得る方法は、
getImage() や play()と同じルールです。
public AudioClip clip = null;
String source = getParameter("source"); // 音声データのソース名
if( source != null )
clip = getAudioClip( getDocumentBase(), source );
else
clip = getAudioClip( getCodeBase(), "default.au" );
AudioClip は3つのメソッド play(), loop(), stop() を提供します。 それぞれ、単純な再生、エンドレスの再生、再生の中断の処理を行います。 たとえば、ページを開いたら BGMの再生をエンドレスで開始するためには、次のように start()メソッドの 中で、AudioClipの loop()メソッドを呼べばいいわけです。
public void start() {
clip.loop(); // エンドレスの再生の開始
}
逆にブラウザの表示が別のページに移った場合は、
後始末のために stop()メソッドの中で AudioClip の stop()メソッドを呼びます。
(こうしておかないと、 BGMが延々と演奏され続けることになってしまいます。)
public void stop() {
clip.stop(); // 再生の終了
}