在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            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)閉