新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 在MIDP應用程序中播放聲音

        在MIDP應用程序中播放聲音

        作者: 時間:2012-05-07 來源:網絡 收藏

        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

        圖片安裝完成后出現如下畫面。

        4.使圖片運動

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

        /**

        *線程的運行處理

        */

        publicvoidrun(){

        while(state==ACTIVE){

        moveBall();//使球運動

        moveBar();//移動小棒

        repaint();//再次描畫

        try{

        Thread.sleep(50);

        }catch(InterruptedCodeExampleceptione){

        e.printStackTrace();

        break;

        }

        }

        }

        /**

        //使球運動

        */

        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){//正在運動

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

        barMovCodeExample=6;

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

        barMovCodeExample=-6;

        }

        repaint();

        }else{//停止運動后

        //再次啟動

        this.initialize();

        }

        }

        /**

        *釋放按鍵時

        */

        protectedvoidkeyReleased(intkey){

        barMovCodeExample=0;

        }

        ex.9

        5.球的反彈

        下面是球的反彈。

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

        ·碰邊壁后反彈

        ·碰小棒后反彈

        ·碰彩球后反彈

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

        碰彩球的反彈時

        block[i][j]=false;

        blockCount--;

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

        另外,球掉落時,改變游戲狀態后游戲結束。

        /**

        //使球運動

        */

        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()){//球落下后

        //游戲結束

        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

        ·清除檢查

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

        //清除彩球

        block[i][j]=false;

        blockCount--;

        ballMoveY*=-1;

        //音效

        blockSound.play();

        //檢查游戲清除

        if(blockCount==0){

        state=CLEAR;

        }

        ex.12

        6.音樂

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

        ·讀取

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大同市| 新昌县| 山东省| 大兴区| 南宫市| 逊克县| 广宁县| 义马市| 钟山县| 应城市| 徐水县| 旅游| 雷州市| 象山县| 万源市| 萍乡市| 景洪市| 南阳市| 玛曲县| 连城县| 百色市| 香港| 阜平县| 三门峡市| 阜城县| 灌南县| 马山县| 镇雄县| 岚皋县| 通道| 互助| 运城市| 沽源县| 屏东市| 五原县| 万全县| 雅安市| 湛江市| 邳州市| 东乌| 驻马店市|