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; } }
浙公网安备 33010602011771号