色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

          if(block[i][j]){

          g.drawImage(

          blockImg,

          i*BLOCK_WIDTH,

          (j+1)*BLOCK_HEIGHT,

          Graphics.LEFT|Graphics.TOP);

          }

          }

          }

          ex.6

          接著查看球和小棒。在paint方法中有以下敘述。(ex.7)

          //查看球

          g.drawImage(ballImg,ballX,ballY,Graphics.LEFT|Graphics.TOP);

          //查看小棒

          g.drawImage(barImg,barX,barY,Graphics.LEFT|Graphics.TOP);

          ex.7

          圖片安裝完成后出現(xiàn)如下畫面。

          4.使圖片運(yùn)動

          接下來使用線程和按鍵事件移動球和小棒。為了使用線程就得在AudioCanvas類中安裝Runnable接口、記述run方法。使用球和小棒定義的移動速度分別變化球和小棒的坐標(biāo)。此外,小棒的移動速度根據(jù)按鍵處理而變化。以下記述了run方法。(ex.8)

          /**

          *線程的運(yùn)行處理

          */

          publicvoidrun(){

          while(state==ACTIVE){

          moveBall();//使球運(yùn)動

          moveBar();//移動小棒

          repaint();//再次描畫

          try{

          Thread.sleep(50);

          }catch(InterruptedCodeExampleceptione){

          e.printStackTrace();

          break;

          }

          }

          }

          /**

          //使球運(yùn)動

          */

          publicvoidmoveBall(){

          ballX+=ballMovCodeExample;

          ballY+=ballMoveY;

          }

          /**

          *移動小棒

          */

          publicvoidmoveBar(){

          barX+=barMovCodeExample;

          //不能向畫面外移動

          if(barX0){

          barX=0;

          }elseif(barX+BAR_WIDTH>getWidth()){

          barX=getWidth()-BAR_WIDTH;

          }

          }

          ex.8

          以下表示的是按鍵處理。(ex.9)

          /*****************************************

          *按鍵處理

          *****************************************/

          /**

          *按按鍵時

          */

          protectedvoidkeyPressed(intkey){

          if(state==ACTIVE){//正在運(yùn)動

          if(getGameAction(key)==Canvas.RIGHT){

          barMovCodeExample=6;

          }elseif(getGameAction(key)==Canvas.LEFT){

          barMovCodeExample=-6;

          }

          repaint();

          }else{//停止運(yùn)動后

          //再次啟動

          this.initialize();

          }

          }

          /**

          *釋放按鍵時

          */

          protectedvoidkeyReleased(intkey){

          barMovCodeExample=0;

          }

          ex.9

          5.球的反彈

          下面是球的反彈。

          球的反彈形式有以下3種。

          ·碰邊壁后反彈

          ·碰小棒后反彈

          ·碰彩球后反彈

          記述了每個moveBall方法。(ex.10)

          碰彩球的反彈時

          block[i][j]=false;

          blockCount--;

          彩球立刻就破碎。彩球破碎后余下的彩球數(shù)量blockCount將有所減少。

          另外,球掉落時,改變游戲狀態(tài)后游戲結(jié)束。

          /**

          //使球運(yùn)動

          */

          publicvoidmoveBall(){

          ballX+=ballMovCodeExample;

          ballY+=ballMoveY;

          //反彈

          //碰邊壁后反彈

          if(ballX0){

          ballMovCodeExample*=-1;

          ballX=0;

          }elseif(getWidth()

          ballX=getWidth()-BALL_HEIGHT;

          ballMovCodeExample*=-1;

          }

          if(ballY0){

          ballMoveY*=-1;

          ballY=0;

          }elseif(ballY>getHeight()){//球落下后

          //游戲結(jié)束

          state=GAME_OVER;

          }

          //碰上小棒后反彈

          if(ballY+BALL_HEIGHT>barY

          ballX+BALL_WIDTH>barX

          ballX

          ballMoveY*=-1;

          ballY=barY-BALL_HEIGHT;

          if(barMovCodeExample0){

          ballMovCodeExample-=2;

          }elseif(barMovCodeExample>0){

          ballMovCodeExample+=2;

          }

          }

          //碰上彩球后反彈

          for(inti=0;i

          for(intj=0;j

          if(block[i][j]){

          if(ballX+BALL_WIDTH>i*BLOCK_WIDTH

          ballX(i+1)*BLOCK_WIDTH){

          if(ballY+BALL_HEIGHT>(j+1)*BLOCK_HEIGHT

          ballY(j+2)*BLOCK_HEIGHT){

          //清除彩球

          block[i][j]=false;

          blockCount--;

          ballMoveY*=-1;}

          }

          }

          }

          }

          }

          }

          ex.10

          碰小棒后反彈情況如下所示:向右按鍵時,球就會讓右方快速移動,反之,向左按鍵時,球則向左方快速移動。(ex.11)

          if(barMoveX0){

          ballMoveX-=2;

          }elseif(barMoveX>0){

          ballMoveX+=2;

          }

          ex.11

          ·清除檢查

          至此安裝完畢游戲就有雛形了。但是,在現(xiàn)在的程序中即使彩球全部消失,游戲也不能清除。那么,球與彩球相撞時,數(shù)出彩球的剩余數(shù)。當(dāng)該數(shù)值為0時,則游戲清除。以下記述的是該處理。(ex.12)

          //清除彩球

          block[i][j]=false;

          blockCount--;

          ballMoveY*=-1;

          //音效

          blockSound.play();

          //檢查游戲清除

          if(blockCount==0){

          state=CLEAR;

          }

          ex.12

          6.音樂

          在本講中的泡泡龍游戲的中最好使用BGM和音效。游戲開始的同時演奏BGM,音效則是球在碰壁、碰小棒反彈時,以及彩球破碎時才的。

          ·讀取

          用BlockApplication構(gòu)造函數(shù)讀取音樂數(shù)據(jù)。而且,這里的BGM能夠循環(huán)播放,所以可以使用音頻事件處理。(ex.13)



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

          評論


          相關(guān)推薦

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

          關(guān)閉