在MIDP應(yīng)用程序中播放聲音
}
/**
*描繪處理
*/
protectedvoidpaint(Graphicsg){
g.setColor(255,255,255);
g.fillRect(0,0,getHeight(),getWidth());
g.setColor(0,0,0);
g.drawString(MusicPlay?,50,52,Graphics.TOP|Graphics.LEFT);
g.drawString(
channel=+a.getChannel(),
30,
64,
Graphics.TOP|Graphics.LEFT);
g.drawString(
lapsedtime=+a.getLapsedTime(),
30,
76,
Graphics.TOP|Graphics.LEFT);
g.drawString(
tempo=+a.getTempo(),
30,
88,
Graphics.TOP|Graphics.LEFT);
g.drawString(
time=+a.getTime(),
30,
100,
Graphics.TOP|Graphics.LEFT);
}
/**
*命令事件的處理
*/
publicvoidcommandAction(Commandc,Displayabled){
System.out.println(test);
if(c.equals(START)){
a.play();
}elseif(c.equals(STOP)){
a.stop();
}
}
/**
*線程的處理
*刷新查看
*/
publicvoidrun(){
while(true){
repaint();
try{
Thread.sleep(500);
}catch(Exceptione){
}
}
}
}
ex.2
接受表示音樂播放結(jié)束的事件后,根據(jù)明確的開始播放音樂菜單可以無限循環(huán)地播放音樂。下面的演示詳細(xì)記述了上述例子中的audioAction方法,能夠?qū)崿F(xiàn)無限循環(huán)播放。(ex.3)
/**
*音頻事件的處理
*/
publicvoidaudioAction(AudioClipsound,intevent,intparam){
if(sound==a){
if(event==AudioListener.AUDIO_COMPLETE){
sound.play();
}
}
}
ex.3
接下來制作實際的發(fā)聲應(yīng)用程序。
本講中制作的是簡單的“泡泡龍”游戲。
■游戲方法
移動小棒接住反彈的球使其不掉下去,使上方的彩球逐漸消失的游戲。彩球完全消失并清除后,球再落下則此游戲通過。
■準(zhǔn)備工作
準(zhǔn)備游戲必備的圖片和音效。
準(zhǔn)備以下圖片。
圖1球的圖片
圖2小棒的圖片
圖3彩球的圖片
·背景音樂(bgm.mid)
·球反彈時的音效(ball.mid)
·彩球破碎時的音效(block.mid)
■設(shè)計
以下是狀態(tài)連接圖(4)
本講中為了簡單化,在啟動應(yīng)用程序的同時立刻就啟動游戲。形成游戲開始、球落下后游戲結(jié)束、全部清除彩球后游戲過關(guān)。
Figure4
■制作應(yīng)用程序
現(xiàn)在我們按照以下順序制作應(yīng)用程序。
1.類結(jié)構(gòu)
2.變量、常量的定義
3.查看圖片和音效
4.使圖片運動
5.球的反彈
6.音樂的播放
1.類結(jié)構(gòu)
下表內(nèi)容是類結(jié)構(gòu)。(表5)
表5
2.變量、常量的定義
將下面的應(yīng)用變量、定量作為BlockCanvas例子的屬性并定義。(ex.4)
//狀態(tài)設(shè)定
privateintstate;//狀態(tài)
privatefinalintACTIVE=1;
privatefinalintGAME_OVER=2;
privatefinalintCLEAR=3;
//彩球的設(shè)定
privatefinalintBLOCK_H=7;//彩球橫向的個數(shù)
privatefinalintBLOCK_V=5;//彩球縱向的個數(shù)
privatefinalintBLOCK_WIDTH=getWidth()/BLOCK_H;
privatefinalintBLOCK_HEIGHT=BLOCK_WIDTH/2;
privatebooleanblock[][]=newboolean[BLOCK_H][BLOCK_V];
privateintblockCount;//彩球個數(shù)
//小棒的設(shè)定
privatefinalintBAR_HEIGHT=11;
privatefinalintBAR_WIDTH=23;
privateintbarX=0;
privateintbarY=getHeight()-BAR_HEIGHT;
privateintbarMovCodeExample=0;
//球的設(shè)定
privatefinalintBALL_HEIGHT=10;
privatefinalintBALL_WIDTH=10;
privateintballX;
privateintballY;
privateintballMovCodeExample=5;
privateintballMoveY=5;
privateThreadth;
//畫面類
privateImagebarImg=null;
privateImageballImg=null;
privateImageblockImg=null;
//音效類
privateAudioClipbgm;//Backgroundmusic
privateAudioClipballSound;//Soundofbouncingball
privateAudioClipblockSound;//Soundofdestroyingblocks
ex.4
3.查看圖片和音效
查看準(zhǔn)備好的圖片和音效。BlockCanvas的構(gòu)造函數(shù)內(nèi)分別讀取小棒、球、彩球的圖片。(ex.5)
//讀取圖片
try{
barImg=Image.createImage(/bar.png);
ballImg=Image.createImage(/ball.png);
blockImg=Image.createImage(/block.png);
}catch(CodeExampleceptione){
e.printStackTrace();
}
ex.5
能查看讀取后的圖片。
彩球在圖中的分配為橫7縱5,讀取彩球圖片并描畫在畫面中。用旗表示彩球的狀態(tài)。保持原來的排列。將一個一個的彩球使用原來的排列并計算出坐標(biāo),安排在畫面中。(ex.6)
//查看彩球
g.setColor(0,0,255);
for(inti=0;i
for(intj=0;j
評論