import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.lcdui.*;
import java.io.*;
//サウンドを同時再生する(キャンバス)
class PlayerCanvas extends Canvas {
//プレイヤー
private Player[] sound =new Player[5];//サウンド
private int volume=100; //ボリューム
//コンストラクタ
PlayerCanvas() {
try {
sound[0]=readSound("audio/midi","bgm0.mid");
for (int i=0;i<4;i++) {
sound[i+1]=readSound("audio/x-wav","se"+i+".wav");
}
} catch (Exception e) {
e.printStackTrace();
}
}
//サウンド読み込み
private Player readSound(String type,String name)
throws Exception {
Player sound=null;
InputStream in =null;
try {
in=getClass().getResourceAsStream(name);
sound=Manager.createPlayer(in,type);
sound.prefetch();
return sound;
} catch (Exception e) {
System.out.println(e.toString());
try {
if (in!=null) in.close();
} catch (Exception e2) {
}
throw e;
}
}
//サウンド再生
private void playSound(int idx) {
stopSound(idx);
try {
//ボリューム指定
VolumeControl vc=(VolumeControl)
sound[idx].getControl("VolumeControl");
vc.setLevel(volume);
//再生
sound[idx].setLoopCount(2);
sound[idx].setMediaTime(0);
sound[idx].start();
} catch (Exception e) {
}
}
//サウンド停止
private void stopSound(int idx) {
try {
sound[idx].stop();
} catch (Exception e) {
}
}
//描画
public void paint(Graphics g) {
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0,0,0);
g.drawString("PlayerEx", 0,0, g.LEFT|g.TOP);
g.drawString("0キー:bgm0.mid",0,24*1,g.LEFT|g.TOP);
g.drawString("1キー:se0.wav", 0,24*2,g.LEFT|g.TOP);
g.drawString("2キー:se1.wav", 0,24*3,g.LEFT|g.TOP);
g.drawString("3キー:se2.wav", 0,24*4,g.LEFT|g.TOP);
g.drawString("4キー:se3.wav", 0,24*5,g.LEFT|g.TOP);
g.drawString("5キー:se4.wav", 0,24*6,g.LEFT|g.TOP);
}
//キープレスイベント
public void keyPressed(int keyCode) {
if (keyCode==0) return;
switch(keyCode) {
case KEY_NUM0: playSound(0);break;
case KEY_NUM1: playSound(1);break;
case KEY_NUM2: playSound(2);break;
case KEY_NUM3: playSound(3);break;
case KEY_NUM4: playSound(4);break;
}
}
}
|