国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

分析MIDP低級事件處理機制

2019-11-18 16:08:00
字體:
來源:轉載
供稿:網友
   在MIDP高級事件處理機制中我們講述了如何實現CommandListener和ItemStateListener接口來完成高級事件處理。但是來自于鍵盤輸入的低級事件是不能由Command來完成的。你必須繼承Canvas類并覆蓋其中的方法來完成低級事件的處理。

    通常低級事件的處理是為了滿足游戲開發的需要,因為游戲開發相關的問題非常復雜。因此不在這里進行闡述,有興趣的朋友可以和我索要相關的游戲開發資料。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得到答案。針對上面的幾個方法我簡單介紹一下,前三個函數是針對按鍵事件處理的,獲得用戶的按鍵值后進行相關的事件處理,有一點需要注意,并不是所有的設備都支持keyRepeat特性,因此在使用之前你應該通過hasRepeatEvents()函數來判斷,接下來的三個函數是針對觸摸屏式的設備的,它以屏幕上的點的位置位參數,注意在使用他們以前應該判斷設備是不是支持這個特性,使用haspointerEvents()判斷,后面的兩個函數是屏幕被顯示和被隱藏的時候觸發的。paint()和commandAction()大家肯定都很熟悉了,paint()在Canvas被初始化或者調用repaint()的時候執行。
        下面是一個例子,它的功能就是在屏幕上顯示出你按下鍵的鍵值,界面非常簡單因此沒有抓圖。代碼如下所示:

    import javax.microedition.lcdui.Display;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeException;
    public class LowLevelMIDlet extends MIDlet
    {

  •  private Display display;
        private KeyCanvas keyCanvas;

        protected void startApp() throws MIDletStateChangeException
        {
            display = Display.getDisplay(this);
            keyCanvas = new KeyCanvas();
            display.setCurrent(keyCanvas);

        }

        protected void pauseApp()
        {
        }

        protected void destroyApp(boolean arg0) throws MIDletStateChangeException
        {
        }

    }

    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;



    public class KeyCanvas extends Canvas implements CommandListener
    {
        private String key = "Press any key";

        protected void paint(Graphics g)
        {
            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();
        }

      
        public void commandAction(Command arg0, Displayable arg1)
        {

        }

    }

  • (出處:http://m.survivalescaperooms.com)



    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 桃江县| 永福县| 静宁县| 乐陵市| 汕头市| 蚌埠市| 临沧市| 交口县| 武川县| 宜黄县| 大竹县| 手游| 宽城| 鄂州市| 赤壁市| 杨浦区| 南漳县| 汨罗市| 珠海市| 孟连| 南通市| 五家渠市| 香格里拉县| 米泉市| 康定县| 且末县| 龙泉市| 佛山市| 平江县| 巨野县| 永兴县| 东山县| 永年县| 健康| 汶川县| 宣化县| 三河市| 苏尼特右旗| 神木县| 青河县| 彩票|