曾经的错,过去了,总不能回味在过去。现在的,很好,累完了,很舒服。不要伤,总会有人在支撑你。
首页 arrow 会员博客 arrow 游戏中声音的播放

游戏中声音的播放 输出PDF 打印 E-mail
Author Author: j2_lover | Date Date: 2008-04-07 | View Count View: 860 | section & Category 会员博客 -  个人博客

//  在这里主要实现导入声音后对声音大小和频率的控制。

要播放声音,首先要得到player  接口的实例子

public class GameCan extends Canvas {
 private Player player;

 private VolumeControl vc;//创建音量的控制;

 private TempoControl tc;//创建频率的控制;
private int vcal,tcal;
 public GameCan() {
  try {
   player = Manager.createPlayer(getClass().getResourceAsStream(
     "/title.mid"), "audio/midi");//创建接口
   player.prefetch();//获取设备;
   vc=(VolumeControl) player.getControl("VolumeControl");
   vcal= vc.getLevel();//获取并得到音量控制;
   
   tc=(TempoControl) player.getControl("TempoControl");
   tcal=tc.getTempo();//获取和得到音频控制;
   
   player.setLoopCount(-1);//声音循环次数,-1代表无限循环;
   player.start();//启动声音;
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (MediaException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

 protected void paint(Graphics g) {
  g.setColor(0);//这里可以随便画些什么````
  g.fillRect(0, 0, 29, 78);

 }
 
 protected void keyPressed(int keyCode){//按键响应;下边的代码大家应该可以理解
  int action=getGameAction(keyCode);
  switch(action){
  case UP:
   vcal=Math.min(vcal+10, 100);
   vc.setLevel(vcal);
   break;
  case DOWN:
   vcal=Math.max(0, vcal-10);
   vc.setLevel(vcal);
   break;
  case RIGHT:
   tcal=Math.min(tc.getMaxRate(), tcal+10000);
   tc.setTempo(tcal);
   break;
  case LEFT:
   tcal=Math.max(0, tcal-10000);
   tc.setTempo(tcal);
   break;
  }
  switch(keyCode){
  case KEY_NUM0:
   try {
     player.start();
    } catch (MediaException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    break;
  case KEY_NUM1:
   try {
     player.stop();
    } catch (MediaException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    break;
  case KEY_NUM3:
   try {
     Manager.playTone(60, 1000, 80);
    } catch (MediaException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    break;
  }
 }

}



收藏到您的网摘: Google书签 Yahoo书签 雅虎收藏夹 365Key网摘 新浪ViVi 百度收藏 天极网摘 diglog 和讯网摘 POCO网摘 YouNote网摘 博拉网 天下图摘 spurl blogmarks BlinkList reddit digg Del.icio.us

本文关键字本文关键字: 游戏  声音  播放  

阅读数: 861 | 打印 | E-mail

  评论 (3)
RSS评论
 1 评论者 j2_lover, 时间 2008-04-07 23:49
对了,大家要是有什么需要帮助的话可以留言 ;共同学习;
 2 评论者 虫虫, 时间 2008-05-06 13:10
我用您上面的代码,不对啊。总是说异常。不 知道是什么原因。我把mid文件与java源文件放 一个目录了啊。。。
 3 评论者 wupei, 时间 2008-05-07 09:01
应该放在RES目录吧..

发表评论

姓名:
E-mail
您的网站/主页
标题:
评论:

验证码:* Code
若有人评论本文,请E-mail通知我。

最近更新 ( 2008-04-09 )
(Eclipse下J2ME开发环境的配置) < 上一篇   下一篇 > (invoke different cellphone's softkey)