- 締切済み
java.applet.AudioClipインターフェースについて
初歩的な質問なんですがjava.applet.AudioClipインターフェースにおいて定義されているloop(),stop(),play()のメソッド達はどのように実装されるものなのでしょうか。 AudioClip ac; ac = getAudioClip(getDocumentBase(), "音楽データのある所"); ac.play(); としただけで音楽が流れると解説されているのですが、抽象メソッドであるplay()をどこでどのように実装しているのかわかりません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ssr-y6
- ベストアンサー率71% (5/7)
getAudioClipで取得できるのは、AudioClipインターフェースではなく、 AudioClipインターフェースを実装し、音楽データとそれを演奏する仕組みを組み込んだインスタンスです。 このインスタンスのクラス名は定義できないので、必ず含まれているAudioClipで受け取ります。 この受け取ったインスタンスのplayメソッドは、 そのインスタンスに含まれているデータを適切に再生できるような仕組みを組み込んでオーバーライドされたものです。 よって、そのplayメソッドを呼び出すだけで音楽は演奏されます。 以下は、アプレットと同じディレクトリに存在する音楽ファイルを再生するプログラムです。 音楽ファイル名はparamタグで設定します。 -----Java----- import java.applet.*; import java.awt.*; import java.awt.event.*; public class audioclip extends Applet { Button PB, SB; AudioClip AC = null; Label LB; public void init() { setLayout(new GridLayout(3, 1)); add(PB = new Button("Play")); add(SB = new Button("Stop")); add(LB = new Label("")); PB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { AC = getAudioClip(getDocumentBase(), getParameter("Clip")); AC.play(); } catch (Exception ex) { LB.setText(ex.toString()); }; }; }); SB.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (AC != null) AC.stop(); AC = null; }; }); }; } -----ページHTML----- <html> <head><title>Play Clip</title></head> <body> <center> <applet codebase="." code="audioclip" width="240" height="120"> <param name="Clip" value="test.wav"> </applet> </center> </body> </html>
- pcbeginner
- ベストアンサー率46% (261/560)