饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

          3G 手機開發網

             :: 首頁 :: 聯系 :: 聚合  :: 管理
            99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
          原文:http://javaeye.5d6d.com/thread-90-1-1.html

          深入分析J2ME平臺MIDP低級事件處理機制


            通常低級事件的處理是為了滿足游戲開發的需要,因為游戲開發相關的問題非常復雜。因此不在這里進行闡述,有興趣的朋友可以和我索要相關的游戲開發資料。MIDP定義了如下鍵值在Canvas類內:
            
            KEY_NUM0
            KEY_NUM1
            KEY_NUM2
            KEY_NUM3
            KEY_NUM4
            KEY_NUM5
            KEY_NUM6
            KEY_NUM7
            KEY_NUM8
            KEY_NUM9
            KEY_STAR
            KEY_POUND
            這些都是按鍵基本值,當然有些手機是觸摸屏的。事件的傳遞是通過如下方法來實現的。
            
            protected void keyPressed(int keyCode)
            protected void keyReleased(int keyCode)
            protected void keyRepeated(int keyCode)
            protected void pointerPressed(int x, int y)
            protected void pointerDragged(int x, int y)
            protected void pointerReleased(int x, int y)
            protected void showNotify()
            protected void hideNotify()
            protected abstract void paint(Graphics g)
            commandAction() method of the CommandListener interface
          開發者應該繼承Canvas類的同時覆蓋相應的方法來實現低級事件的處理,低級事件的處理是連續的、串行的,在前面的事件返回之前后面的事件不會執行, 當然也有例外,你可以參考API doc得到答案。下面是一個例子,它的功能就是在屏幕上顯示出你按下鍵的鍵值,界面非常簡單因此沒有抓圖。代碼如下所示:
            
            //LowLevelMIDlet.java
            
            import javax.microedition.lcdui.Display;
            import javax.microedition.midlet.MIDlet;
            import javax.microedition.midlet.MIDletStateChangeException;
            
            /*
            * Created on 2004-6-24
            *
            * TODO To change the template for this generated file go to
            * Window - Preferences - Java - Code Style - Code Templates
            */
            
            /**
            * @author P2800
            *
            * TODO To change the template for this generated type comment go to Window -
            * Preferences - Java - Code Style - Code Templates
            */
            public class LowLevelMIDlet extends MIDlet
            {
            
            private Display display;
            private KeyCanvas keyCanvas;
            
            /*
            * (non-Javadoc)
            *
            * @see javax.microedition.midlet.MIDlet#startApp()
            */
            protected void startApp() throws MIDletStateChangeException
            {
            // TODO Auto-generated method stub
            display = Display.getDisplay(this);
            keyCanvas = new KeyCanvas();
            display.setCurrent(keyCanvas);
            
            }
            
            /*
            * (non-Javadoc)
            *
            * @see javax.microedition.midlet.MIDlet#pauseApp()
            */
            protected void pauseApp()
            {
            // TODO Auto-generated method stub
            
            }
            
            /*
            * (non-Javadoc)
            *
            * @see javax.microedition.midlet.MIDlet#destroyApp(boolean)
            */
            protected void destroyApp(boolean arg0) throws MIDletStateChangeException
            {
            // TODO Auto-generated method stub
            
            }
            
            }
            
            //KeyCanvas.java
            
            import javax.microedition.lcdui.Canvas;
            import javax.microedition.lcdui.Command;
            import javax.microedition.lcdui.CommandListener;
            import javax.microedition.lcdui.Displayable;
            import javax.microedition.lcdui.Graphics;
            
            /*
            * Created on 2004-6-25
            *
            * TODO To change the template for this generated file go to
            * Window - Preferences - Java - Code Style - Code Templates
            */
            
            /**
            * @author P2800
            *
            * TODO To change the template for this generated type comment go to Window -
            * Preferences - Java - Code Style - Code Templates
            */
            public class KeyCanvas extends Canvas implements CommandListener
            {
            private String key = "Press any key";
            
            /*
            * (non-Javadoc)
            *
            * @see javax.microedition.lcdui.Canvas#paint(javax.microedition.lcdui.Graphics)
            */
            protected void paint(Graphics g)
            {
            // TODO Auto-generated method stub
            g.setColor(255, 255, 255);
            g.fillRect(0, 0, getWidth(), getHeight());
            g.setColor(0, 0, 0);
            g.drawString(key, getWidth() / 2, getHeight() / 2, Graphics.TOP
            | Graphics.HCENTER);
            
            }
            
            public void keyPressed(int keyCode)
            {
            key = keyCode + " is pressed";
            repaint();
            }
            
            public void keyReleased(int keyCode)
            {
            key = keyCode + " is released";
            repaint();
            }
            
            /*
            * (non-Javadoc)
            *
            * @see javax.microedition.lcdui.CommandListener#commandAction(javax.microedition.lcdui.Command,
            *   javax.microedition.lcdui.Displayable)
            */
            public void commandAction(Command arg0, Displayable arg1)
            {
            // TODO Auto-generated method stub
            
            }
            
            }





          爬蟲工作室 -- 專業的手機軟件開發工作室
          3G視線 -- 專注手機軟件開發
          posted on 2007-08-26 23:32 3G工作室 閱讀(658) 評論(0)  編輯  收藏 所屬分類: j2me

          Feedback

          # re: 深入分析J2ME平臺MIDP低級事件處理機制 2007-08-27 16:35 姜利陽
          Good  回復  更多評論
            

          主站蜘蛛池模板: 松阳县| 墨脱县| 普陀区| 永和县| 双桥区| 文安县| 平南县| 曲阳县| 仙居县| 南丰县| 孝感市| 平江县| 翁源县| 云浮市| 马鞍山市| 砀山县| 文安县| 峡江县| 海林市| 汉沽区| 甘谷县| 武汉市| 信丰县| 龙山县| 石嘴山市| 大竹县| 扎兰屯市| 西平县| 宁陵县| 徐闻县| 嵩明县| 图木舒克市| 滦平县| 绍兴市| 阆中市| 安顺市| 拉萨市| 巴楚县| 惠水县| 郑州市| 林西县|