麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

基于MIDP1.0實(shí)現(xiàn)組合按鍵

2019-11-18 12:44:04
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

  我們知道有些手機(jī)是不支持重復(fù)按鍵功能,為了模擬重復(fù)按鍵的功能,我們不得不使用一個(gè)線程來(lái)進(jìn)行處理。對(duì)于重復(fù)按鍵網(wǎng)上已經(jīng)有一些文章進(jìn)行了探討,其實(shí)利用線程我們還可以實(shí)現(xiàn)組合按鍵的功能。當(dāng)然,在手機(jī)這種設(shè)備上,利用組合按鍵進(jìn)行游戲,有一定的限制,因?yàn)槭謾C(jī)各個(gè)按鍵排列比較緊湊,同時(shí)按下兩個(gè)甚至三個(gè)按鍵在操作上會(huì)有局限性。但這也是仁者見(jiàn)仁、智者見(jiàn)智的問(wèn)題,假如你想提高游戲的可玩性和娛樂(lè)性,組合按鍵仍是必不可少的條件。

  我定義了一個(gè)進(jìn)行按鍵監(jiān)聽(tīng)的類(lèi),這個(gè)類(lèi)實(shí)現(xiàn)了Runnable接口。在這個(gè)類(lèi)里要害的一個(gè)數(shù)據(jù)結(jié)構(gòu)就是一個(gè)字節(jié)型的數(shù)組,它是用來(lái)存儲(chǔ)當(dāng)前所有被按下的鍵。我這里把數(shù)組的長(zhǎng)度設(shè)定為2,主要是從應(yīng)用的角度來(lái)考慮的,因?yàn)榫烤乖诋?dāng)前手機(jī)設(shè)備上同時(shí)按三個(gè)鍵進(jìn)行游戲的不多。下面就是實(shí)現(xiàn)組合按鍵的核心代碼。

  按鍵事件類(lèi):

import javax.microedition.lcdui.*;

public class NewEvent implements Runnable{

        KeyEventCanvas c=null;

        /*
         * 用來(lái)判定是否有鍵被按下
         */
        PRotected boolean switchPoint;

        /*
         * 這個(gè)數(shù)組用來(lái)存儲(chǔ)所有同時(shí)被按鍵的鍵碼
         */
        protected byte[] keyCode;

        /*
         * 訪問(wèn)數(shù)組的索引
         */
        byte index;


        public NewEvent(KeyEventCanvas c){
                this.c=c;
                keyCode=new byte[2];
        }

        /*
         * 這個(gè)方法把被按鍵的鍵碼存儲(chǔ)到數(shù)組中
         */
        public synchronized void startAction(int keyCode){
                this.keyCode[index]=(byte)keyCode;
                index=(byte)((index+1)%this.keyCode.length);
        }

        /*
         * 當(dāng)某個(gè)鍵被釋放時(shí),這個(gè)方法把該鍵存儲(chǔ)在數(shù)組中的鍵碼置為0
         */
        public synchronized void stopAction(int keyCode){
                for(int i=0;i<=this.keyCode.length-1;i++){
                        if(this.keyCode[i]==(byte)keyCode){
                                this.keyCode[i]=0;
                                break;
                        }
                }
        }
        
        /*
         * 這個(gè)方法用來(lái)判定是否有被按下的鍵,返回true表示有鍵按下,返回false表示沒(méi)有鍵被按下
         */
        public synchronized boolean getSwitchPoint(){
                this.switchPoint=false;
                for(int i=0;i<=this.keyCode.length-1;i++){
                        if(this.keyCode[i]!=0){
                                this.switchPoint=true;
                                break;
                        }
                }
                return this.switchPoint;
        }

        /*
         * 返回字節(jié)數(shù)組
         */
        public synchronized byte[] getKeyCode(){
                return this.keyCode;
        }
        
        public void run(){
                byte[] tmp=this.getKeyCode();
                while(true){
                        while(this.getSwitchPoint()){
                                /*
                                 * 通過(guò)這個(gè)循環(huán)遍歷數(shù)組,碰到被按下的鍵就進(jìn)行處理
                                 */
                                for(int i=0;i<=tmp.length-1;i++){

                                        if(tmp[i]!=0){
                                                switch(c.getGameAction(tmp[i])){
                                                
                                                case Canvas.UP:
                                                        c.y--;//y是在Canvas中定義的一個(gè)屬性,表示y軸坐標(biāo)
                                                        break;
                                                case Canvas.DOWN:
                                                        c.y++;
                                                        break;
                                                case Canvas.LEFT:
                                                        c.x--;//x是在Canvas中定義的一個(gè)屬性,表示x軸坐標(biāo)
                                                        break;
                                                case Canvas.RIGHT:
                                                        c.x++;
                                                        break;
                                                }
                                        }
                                }
                                c.repaint();
                                try{
                                        Thread.sleep(10);
                                }catch(InterruptedException e){
                                        
                                }
                        }
                }
        }
}



發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美a级在线免费观看 | 亚洲电影在线观看高清免费 | 国产成人精品视频在线 | av在线收看 | 欧美亚洲国产成人 | 黄色毛片视频在线观看 | 热99精品视频| 毛片视频免费观看 | 欧美久久一区 | 在线视频观看一区二区 | 精品麻豆cm视频在线看 | 黄色网址在线免费 | 久草最新在线 | 色综合视频 | 国产一区二区三区四区五区加勒比 | 免费观看视频网站 | 免费看欧美一级特黄a毛片 九色com | 美女亚洲综合 | 在线成人www免费观看视频 | 嗯哈~不行好大h双性 | 国产精品视频免费在线观看 | 久久精品中文字幕一区 | 成人午夜激情网 | av在线直播观看 | 免费视频一区 | 激情亚洲网 | 天天草天天爱 | 最新一区二区三区 | 538任你躁在线精品视频网站 | 91小视频在线观看免费版高清 | 国产精品视频不卡 | 国产一级片91 | www.mitao| 二级大黄大片高清在线视频 | 九九综合九九 | 亚洲情av | 激情综合网俺也去 | 久久精品一区二区三区不卡牛牛 | 黑人一级片| xnxx18日本 | 亚洲电影在线观看高清免费 |