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> |