新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 在MIDP應(yīng)用程序中播放聲音

在MIDP應(yīng)用程序中播放聲音

作者: 時間:2012-05-07 來源:網(wǎng)絡(luò) 收藏

}

/**

*描繪處理

*/

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ā)聲

本講中制作的是簡單的“泡泡龍”游戲。

■游戲方法

移動小棒接住反彈的球使其不掉下去,使上方的彩球逐漸消失的游戲。彩球完全消失并清除后,球再落下則此游戲通過。

■準(zhǔn)備工作

準(zhǔn)備游戲必備的圖片和音效。

準(zhǔn)備以下圖片。

圖1球的圖片

圖2小棒的圖片

圖3彩球的圖片

·背景音樂(bgm.mid)

·球反彈時的音效(ball.mid)

·彩球破碎時的音效(block.mid)

■設(shè)計

以下是狀態(tài)連接圖(4)

本講中為了簡單化,在啟動的同時立刻就啟動游戲。形成游戲開始、球落下后游戲結(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)

360截圖20120507113322299.jpg

表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



關(guān)鍵詞: 聲音 播放 應(yīng)用程序 MIDP

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉