| 4. 画像の表示と音声の再生 |
画像の表示や音声ファイルの再生について説明します。
| (1) 画像の表示 |
gif や jpeg といった画像ファイルも簡単に扱うことができます。アプレットを作るためには Applet クラスが必要でしたが、この Applet クラスのメソッドで getImage( ) というメソッドがあります。このメソッドを使うと画像のデータを読み込むことができます。読み込んだ画像データは java.awt.Image クラスのオブジェクトとして扱います。
Image img = getImage(getCodeBase( ),"imgdata.gif");
Image クラスは abstract クラスなので new でオブジェクトを生成できません。 ですから画像のオブジェクトを作るときは、
getImage メソッドを使って戻り値の Image オブジェクトを変数に代入します。
さて、getImage メソッドの引数ですが、 API ドキュメントを見ると次のような形式になっています。
getImage(URL url,String name)
1つ目の引数には URL を指定します。 例題では Applet クラスの getCodeBase( ) というメソッドを使います。このメソッドはアプレットがある場所の URL を管理している URL オブジェクトを返すメソッドです。Javaでは URL も java.net.URL クラスのオブジェクトとして扱います。2番目の引数で画像のファイル名を指定します。
読み込んだ画像データは Graphics クラスの drawImage( ) メソッドで表示します。このメソッドの形式は以下の通りです。
drawImage(Image img,int x,int y,ImageObserver obj)
表示する画像オブジェクト、座標、イメージオブザーバーのオブジェクトを指定します。イメージオブザーバーとは画像を管理するオブジェクトのことです。アプレットプログラムの場合はアプレット自信がイメージオブザーバーになるので、this と指定します。
指定したファイルが存在しないと何も表示されません。
| (2) 音声の再生 |
AudioClip clip = getAudioClip(getCodeBase( ),"music.mid");
Applet クラスには getAudioClip( ) というメソッドがあります。 このメソッドの引数は URL とファイル名です。 先ほどの getImage( ) と同じですね。このメソッドの戻り値は AudioClip オブジェクトです。このオブジェクトを使って音声を再生します。
AudioClip のメソッドは play( )、stop( )、loop( ) があります。play( ) は1度だけ再生、stop( ) は再生の停止、loop( ) は繰り返し再生します。
JDK1.1.X までは AU ファイルという音声ファイルしか再生できませんでしたが、 Java2 からは MIDI ファイルや WAV ファイルなども再生できるようになりました。
1回だけ再生する場合には Applet クラスの play(URL url, String filename) というメソッドもあります。
| (3) 画像と音声の例題 |
画像ファイルのダウンロード
音声ファイルのダウンロード
ImgAudio.java
import java.awt.*;
import java.applet.*;
public class ImgAudio extends Applet {
AudioClip clip;
Image img;
public void init() {
clip = getAudioClip(getCodeBase(),"hello.mid");
img = getImage(getCodeBase(),"onpu.gif");
}
public void start() {
clip.loop();
}
public void stop() {
clip.stop();
}
public void paint(Graphics g) {
// Image クラスのメソッドで画像の幅と高さを求めます
int width = img.getWidth(this);
int height = img.getHeight(this);
g.drawImage(img,0,0,this);
g.drawString("MIDIファイル再生中",width,height);
}
}
|
<APPLET CODE="ImgAudio.class" width=200 height=100> </APPLET> |