尼克和博士的故事12(J2ME入门的好书)
J2ME初学者必看的书
音 乐
本讲我们学习音乐。
哇,好兴奋啊!
音乐可以使表现力大大提高!尼克,可要努力学哦!
1.播放音乐
下面是本次讲座使用的模板程序。我们将把本讲内容写进下面的程序进行讲解。
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.Display;
/**
* 播放音乐的简单范例
*/
public class Audio_Test extends MIDlet{
private Display display;
private Audio_Canvas canvas;
/**
* 构造函数
*/
public Audio_Test(){
canvas = new Audio_Canvas();
display = Display.getDisplay(this);
}
public void startApp(){
display.setCurrent(canvas);
}
public void pauseApp(){}
public void destroyApp(boolean unconditional){}
}
import javax.microedition.lcdui.*;
import com.nec.media.*;
/**
* 音频canvas
*/
public class Audio_Canvas
extends Canvas
implements Runnable, AudioListener{
private AudioClip audio;//音乐数据
private Thread th;
/**
* 构造函数
*/
public Audio_Canvas(){
//下面记述处理
th = new Thread(this);
th.start();
}
/**
* 描绘处理
*/
public void paint(Graphics g){
}
/**
* 音频事件处理
*/
public void audioAction(AudioClip sound, int event, int param){
}
/**
* 线程处理
* 刷新显示
*/
public void run(){
while(true){
repaint();
}
}
}
首先,读取音乐数据,进行播放。
是,博士。
在Audio_Canvas类的构造函数里写着下面的程序。audio = Media.getAudioClip("/bgm.mid");//读取音乐数据
audio.play();//播放音乐数据
读取音乐数据,要用到AudioClip类啊。
"/bgm.mid"是文件的pass名么?
没错啊。需要使用AudioClip类里面的play方法进行播放。改变一下程序,运行试试吧。方法
作用
play()
播放音乐数据
stop()
停止音乐数据
博士,音乐数据可以播放了!
恩。这就对了。
但是博士,音乐数据除了播放和停止之外,还有什么用途呀?
当然,还有许多其他的功能。你可以参考一下下面的表。
方法
作用
getChannel()
取得音乐数据的信道(channel数)
getLapsedTime()
以毫秒单位取得演奏的音乐数据播放的时间
getTempo()
取得音乐数据的速度(tempo)
getTime()
取得音乐数据的播放时间
setLoopCount (int count)
设定演奏的音乐数据的重复播放次数
2.显示播放时间
下面,就对这个程序进行修改吧。
根据上述功能描绘出演奏的音乐数据播放的时间。
博士,这里可以使用"getLapsedTime方法"吗?
可以的。顺便说一下,描绘处理是写在paint方法里的。
这是当然了!
/**
* 描绘处理
*/
public void paint(Graphics g){
g.setColor(255,255,255);
g.fillRect(0,0,getHeight(),getWidth());


