/* iアプリ, MIDP でのサウンド Time-stamp: "2006/01/25 Wed 20:04 hig" Saburo Higuchi 2003-2005 http://www.math.ryukoku.ac.jp/~hig/ プログラム解説等 http://www.a.math.ryukoku.ac.jp/~hig/course/juniors_2005/07/ */ import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import com.kddi.media.*; // SMAF などを使う /** IApplication または MIDlet を継承するクラス */ public class SoundSample extends MIDlet { /** 起動するときに呼ばれる メソッド. 必須. */ public void startApp(){ SoundCanvas cc = new SoundCanvas(this); Display.getDisplay(this).setCurrent(cc); } public void pauseApp(){} public void destroyApp(boolean unconditional){} } class SoundCanvas extends Canvas implements MediaEventListener { SoundSample parent; String message="123を押してね"; final int nfile=3; String [] filename; int initial=1; int melody; MediaPlayerBox ap; MediaResource [] tr; SoundCanvas(SoundSample parent){ this.parent=parent; tr = new MediaResource[nfile]; // サウンドファイルの読み込み filename = new String [nfile]; filename[0]="jp001.mmf"; filename[1]="jp002.mmf"; filename[2]="jp003.mmf"; try { for(int i=0; i=0 && initial < nfile ){ melody=initial; ap.setResource(tr[initial]); ap.play(); } } public void paint(Graphics g){ g.setColor(255,255,255); g.fillRect(0,0,getWidth(),getHeight()); // 画面を消す g.setColor(0,0,0); g.drawString(message,0,getHeight() ,Graphics.LEFT|Graphics.BOTTOM); } // implements MediaEventListener ならこれが必要 public void stateChanged(MediaPlayerBox source, int type, int option){ // 演奏終了などのイベント処理 } /** ゲームアクション, キー が押されたとき */ protected synchronized void keyPressed(int keyCode){ if ( keyCode==KEY_NUM1 ){ // .stop() することもできるが, しないと重ねて鳴る ap.stop(); ap.unsetResource(tr[melody]); ap.setResource(tr[0]); ap.play(); melody=0; message = "1キーが押された"; } else if ( keyCode==KEY_NUM2 ){ ap.stop(); ap.unsetResource(tr[melody]); ap.setResource(tr[1]); ap.play(); melody=1; message = "2キーが押された"; } else if ( keyCode==KEY_NUM3 ){ ap.stop(); ap.unsetResource(tr[melody]); ap.setResource(tr[2]); ap.play(); melody=2; message = "3キーが押された"; } repaint(); // paint メソッドを呼ぶ. } /** ゲームアクション, キー が離されたとき */ protected synchronized void keyReleased(int keyCode){ // これは検出しない. } /** ゲームアクション, キー が押されたままのとき */ protected synchronized void keyRepeated(int keyCode){ // これは検出しない. } } /* Local Variables: mode: java End: */