1.開発の準備

(8)ソフトキーとサウンド

//クラスライブラリの組み込み
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;
import java.io.*;

///////////////////////////////////////////////////////////////////////// オープンアプリの起動クラス
public class GameSamp03 extends MIDlet implements CommandListener{
  Command cmd1 = new Command("再生",Command.EXIT,0);    //左ソフトキーの定義
  Command cmd2 = new Command("停止",Command.EXIT,0);    //左ソフトキーの定義
  Command cmd3 = new Command("SE",Command.EXIT,0);      //右ソフトキーの定義
  Byoga b;
  public GameSamp03() {
    b = new Byoga();
    b.addCommand(cmd1);             //左ソフトキーの追加
    b.addCommand(cmd3);             //右ソフトキーの追加
    b.setCommandListener(this);     //ソフトキーのイベント指定
    Display.getDisplay(this).setCurrent(b);
    Thread th = new Thread(b);
    th.start();
  }
  public void startApp(){}
  public void pauseApp(){}
  public void destroyApp(boolean flag){}
  ////////// ソフトキーのイベント処理
  public void commandAction(Command c,Displayable disp){
    if(c==cmd1){
      Byoga.soundFlg=1;          //MIDI再生
      //メニューを停止に変更
      b.removeCommand(cmd1);     //すでにあるソフトキーを一旦削除
      b.removeCommand(cmd3);
      b.addCommand(cmd2);        //再びソフトキーを追加
      b.addCommand(cmd3);
    }
    if(c==cmd2){
      Byoga.soundFlg=2;          //MIDI停止
      //メニューを再生に変更
      b.removeCommand(cmd2);
      b.removeCommand(cmd3);
      b.addCommand(cmd1);
      b.addCommand(cmd3);
    }
    if(c==cmd3)Byoga.soundFlg=3; //SE再生
  }
}

  //////////////////////////////////////////////////////////////////////// 画面描画に関するクラス
class Byoga extends GameCanvas implements Runnable {
  public static int soundFlg;         //サウンドフラグ
  public void run() {
    Graphics g=getGraphics();         //Graphicsオブジェクト
    InputStream in;                   //サウンドファイルの読み込み用
    Player[] player=new Player[2];    //サウンド生成プレイヤー
    soundFlg=0;
    try {
      //MIDIの準備
      in=getClass().getResourceAsStream("/bgm.mid");
      player[0]=Manager.createPlayer(in,"audio/midi");
      player[0].setLoopCount(-1);     //再生回数。-1は無限再生
      player[0].prefetch();
      //WAVEの準備
      in=getClass().getResourceAsStream("/se.wav");
      player[1]=Manager.createPlayer(in,"audio/x-wav");
      player[1].prefetch();
    } catch (Exception e) {}
    while(true){
      switch(soundFlg){
      case 1:   //MIDI再生
        try {
          player[0].start();
        } catch (Exception e) {}
        soundFlg=0;
        break;
      case 2:   //MIDI停止
        try {
          player[0].stop();
        } catch (Exception e) {}
        soundFlg=0;
        break;
      case 3:   //WAVE再生
        try {
          player[1].start();
        } catch (Exception e) {}
        soundFlg=0;
        break;
      }
      flushGraphics();          //画面再描画
      try{Thread.sleep(10);}    //10ミリ秒停止
      catch (Exception e) {}
    }
  }
  /////////////////////////////////////////////////////////////////////// その他の処理
  //コンストラクタ(通常はこのまま)
  Byoga() {
    super(false);
  }
}
inserted by FC2 system