import javax.microedition.media.*;

import java.io.*;

class SoundEffects {

 private static SoundEffects instance;
 
 /*设置现在播放的内容和以前播放的内容*/
 Player currentPlayer = null;
 Player lastPlayer = null;

 /*构造函数,把现在播放的内容设者成以前播放的内容*/
 public SoundEffects() {
  // TODO 自动生成构造函数存根

  lastPlayer = currentPlayer;
  }
  
 /*如果音效不为空,返回音效*/
 static SoundEffects getInstance(){
  
  if(instance == null){
   
   instance = new SoundEffects();
  }
  
  return instance;
 }
 
 /*播放器关闭*/
 void closeSound(){
     
  currentPlayer.close();

 }

 /*开始显示游戏LOGO时的声音*/
       
 void startLogoSound(){
  
  lastPlayer = currentPlayer;
  //startPlayer(createPlayer("/open.mid","audio/midi"));

 }
          /*  加注时的音效  */
 void addChickMusic(){
        try {

            //lastPlayer = currentPlayer;
            Player p = createPlayer("/s4.mid", "audio/midi");
            p.start();
            //startPlayer(createPlayer("/s4.mid","audio/midi"));
        } catch (MediaException ex) {
            ex.printStackTrace();
        }
  //startPlayer(createPlayer("/s4.mid","audio/midi"));
 } 
        /*  梭哈时的音效  */
        void SHMusic(){
        try {

            Player p = createPlayer("/s6.mid", "audio/midi");
            p.start();

            //startPlayer(createPlayer());
        } catch (MediaException ex) {
            ex.printStackTrace();
        }
  
  //startPlayer(createPlayer());
 }
        /*游戏时的背景音乐*/
 void backSound(){
  
  lastPlayer = currentPlayer;
  startPlayer(createPlayer("/youshang.mid","audio/midi"));
 }
 /*移到按键时的音效*/
 void moveButton(){
        try {

            //lastPlayer = currentPlayer;
            //startPlayer(createPlayer("/moveBouttn.wav","audio/x-wav"));
            Player p = createPlayer("/moveBouttn.wav", "audio/x-wav");
            p.start();
        } catch (MediaException ex) {
            ex.printStackTrace();
        }
 }
 /*开始播放音效*/
 private void startPlayer(Player p){
  
  if(p != null){
      
    try {
     
     p.stop();
     p.setLoopCount(-1);
     p.start();
    } catch (MediaException e) {
     // TODO 自动生成 catch 块
     e.printStackTrace();
    }
    
  }
  
  /*如果现在播放的音效和以前播放的音效不一致,则关闭以前的音效,防止重音*/
  if(p != lastPlayer & lastPlayer != null){

   lastPlayer.close();
  }
 }
 
 /*根据音效文件路径和类型构造播放器*/
 private Player createPlayer(String filename,String format){
  
  Player p = null;
  
  try{
   
   InputStream is = getClass().getResourceAsStream(filename);
   p = Manager.createPlayer(is,format);
   p.realize();
   p.prefetch();
   
  }catch(IOException e){System.out.println("音乐出现异常");}
   catch(MediaException e){
                      new  messageCanvas("加载音乐出现异常"+e.toString());
                     System.out.println("加载音乐出现异常");}
  
   /*把它设置为正在播放的音效*/
      currentPlayer = p;
  
   return p;
 }
 
}

/**

 * 类说明:音乐的控制(音量的大小)

 * ware audio files  audio/x-wav

 * au                audio/basic

 * mp3               audio/mpeg

 * midi              audio/midi

 * tone              audio/x-tone-sep

 * mpeg              video/mpeg

 * @author 作者: LiuJunGuang

 * @version 创建时间:2011-3-22 下午10:02:59

 */

 

import java.io.InputStream;

 

import javax.microedition.media.Manager;

import javax.microedition.media.MediaException;

import javax.microedition.media.Player;

import javax.microedition.media.control.VolumeControl;

 

public class Music {

            private static Music instance;

 

            private Player player;// 创建一个音乐播放器

              private VolumeControl volumeControl = null;// 声音控制

            private int volume = 50;// 音量的初始值

            private static final int MAX = 100;// 音量最大值

            private static final int MIN = 0;// 音量最小值

            private boolean isplay = false;// 是否正在播放

 

private Music() {

 

}

 

// 采用单例模式 返回本类对象

static Music getInstance() {

           if (instance == null) {

                 instance = new Music();

        }

return instance;

}

 

// 播放音乐

public void playMusic() {

             player = createPlayer("/city.mid", "audio/midi");// 创建音乐播放器

              volumeControl = (VolumeControl) player.getControl("VolumeControl");// 得到音乐控制器

               isplay = true;

             startPlayer(player);// 开始播放音乐

}

 

// 停止音乐播放

public void stopMusic() {

       try {

             if (player != null)

                player.stop();

                 player = null;

                 isplay = false;

           } catch (Exception e) {

                 e.printStackTrace();

       }

}

 

// 加大音量

public void addVolume() {

            if (volumeControl != null) {

                volume += 10;

           if (volume > MAX)

              volume = MAX;

              volumeControl.setLevel(volume);

      }

}

 

public boolean isPlay() {

            return isplay;

}

 

// 减小音量

public void subVolume() {

           if (volumeControl != null) {

                 volume -= 10;

                if (volume < MIN)

                      volume = MIN;

               volumeControl.setLevel(volume);

               }

}

 // 设置音量

public void setVolume(int volue) {

if (volumeControl != null) {

volumeControl.setLevel(volue);

}

}

// 开始播放

private void startPlayer(Player p) {

             if (p != null) {

              try {

                  p.stop();

                 p.setLoopCount(-1);

                p.start();

                } catch (MediaException me) {

                   me.printStackTrace();

             }

  }

}

 

// 创建音乐播放器

private Player createPlayer(String filename, String format) {

Player p = null;

      try {

             InputStream is = getClass().getResourceAsStream(filename);// 得到音乐文件输入流

             p = Manager.createPlayer(is, format);

            p.prefetch();

         } catch (Exception ioe) {

               ioe.printStackTrace();

     }

return p;

}

}

 

posted on 2013-03-06 14:36  爱哎唉  阅读(163)  评论(0)    收藏  举报