隨筆 - 9  文章 - 0  trackbacks - 0
          <2011年11月>
          303112345
          6789101112
          13141516171819
          20212223242526
          27282930123
          45678910

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          GameCanvas.java
            1 package MyJava3;
            2 import com.nokia.mid.ui.FullCanvas;
            3 import javax.microedition.lcdui.Display;
            4 import javax.microedition.lcdui.Graphics;
            5 import javax.microedition.lcdui.Image;
            6 import javax.microedition.midlet.MIDlet;
            7 
            8 public class GameCanvas extends FullCanvas implements Runnable
            9 {
           10     //#------------------------------游戲主要部分------------------------------
           11     //#------------------------------公共變量------------------------------
           12     private boolean threadRunAble = true;//線程運行條件
           13     private Thread mainThread; //線程
           14     private int key_state = 0;//當前鍵值
           15     private boolean key_lock = false;//按鍵執行狀態 ture 執行時候其他邏輯繪制代碼不執行
           16     private int main_state; //1級狀態變量
           17     private int countTime;//時間控制
           18     public final static int DC_KEY_SOFT_LEFT = -6//左軟件(此鍵值為NOKIA鍵值)
           19     public final static int DC_KEY_SOFT_RIGHT = -7//右軟件
           20     public final static int DC_KEY_SOFT_MID = -5;//中間鍵
           21     public final static byte ONE_MAIN_MIGLOGO = 0;//米格閃屏
           22     public final static byte ONE_MAIN_MENU = 3;//主菜單
           23     
           24     //&------------------------------公共變量------------------------------
           25       /**
           26        * 構造函數
           27        * 啟動游戲主線程,初始化
           28        * @param midlet HeroMidlet
           29        */
           30     public GameCanvas(MIDlet midlet)
           31     {
           32         init_MainMiglogo();//一開始進入為LOGO狀態
           33         Display.getDisplay(midlet).setCurrent(this);
           34         mainThread = new Thread(this);
           35         mainThread.start();//啟動主線程
           36     }
           37     
           38      /**
           39        * 游戲主線程
           40        */
           41     public void run()//游戲主線程,不停的循環執行
           42     {
           43         while(threadRunAble)
           44         {
           45             if(!key_lock)
           46             {
           47                 process_All();//邏輯處理
           48                 repaint(); //繪制
           49                 serviceRepaints();
           50             }
           51         }
           52     }
           53     
           54      /**
           55        * 游戲繪制部分
           56        * 根據主狀態處理不同的繪制
           57        * @param Graphics
           58        */
           59     public void paint(Graphics g)
           60     {
           61         switch(main_state)//根據當前狀態處理當前狀態的繪制
           62         {
           63         case ONE_MAIN_MIGLOGO:
           64                         draw_MainMiglogo(g);//如果是LOGO狀態處理LOGO的繪制
           65                         break;
           66         case ONE_MAIN_MENU:
           67                         draw_MainMenu(g);//如果是MENU狀態處理MENU的繪制
           68                             break;
           69         }
           70     }
           71     
           72      /**
           73        * 游戲邏輯控制部分
           74        * 根據主狀態處理不同的邏輯
           75        */
           76     protected void process_All()
           77     {
           78         switch(main_state)
           79         {
           80         case ONE_MAIN_MIGLOGO:
           81                         process_MainMiglogo(key_state);//如果是LOGO狀態處理LOGO的邏輯
           82                         break;
           83         case ONE_MAIN_MENU:
           84                         process_MainMenu(key_state);//如果是MENU狀態處理MENU的邏輯
           85                         break;
           86         }
           87     }
           88     
           89      /**
           90        * 游戲邏輯控制部分2,按鍵處理
           91        * 根據主狀態處理不同的邏輯
           92        * @param keyCode
           93        */
           94     protected void keyPressed(int keyCode)//當按鍵按下去執行一次
           95     {
           96         key_lock = true;
           97         key_state = keyCode;
           98         switch(main_state)
           99         {
          100         case ONE_MAIN_MIGLOGO:
          101                         key_MainMiglogo(key_state);//如果是LOGO狀態處理LOGO的按鍵處理
          102                         break;
          103         case ONE_MAIN_MENU:
          104                          key_MainMenu(key_state);//如果是MENU狀態處理MENU的按鍵處理
          105                          break;
          106         }
          107         key_lock = false;
          108     }
          109     
          110     /**
          111        * 釋放按鍵處理
          112        * @param keyCode int
          113        */
          114     protected void keyReleased(int keyCode)//當按鍵松開執行一次
          115     {
          116         key_state = 0;
          117     }
          118     
          119     //&------------------------------游戲主要部分------------------------------
          120       //***********************1***********************
          121     protected void init_MainMiglogo()//LOGO狀態初始化
          122     {
          123         countTime = 0;
          124         main_state = ONE_MAIN_MIGLOGO;
          125     }
          126     
          127     Image logoImg;
          128     
          129     public final static Image loadImg(String pictureName)
          130     {
          131         Image img = null;
          132         try
          133         {
          134             img = Image.createImage("/bin/"+pictureName+".png");
          135         }
          136         catch(Exception e)
          137         {
          138             e.printStackTrace();
          139         }
          140         return img;
          141     }
          142     protected void draw_MainMiglogo(Graphics g)//LOGO狀態繪制
          143     {
          144         g.setClip(00240320);
          145         g.setColor(0x000000);
          146         g.fillRect(00240320);//清屏
          147         g.setColor(0xffffff);
          148         logoImg = loadImg("logo");
          149         //g.drawImage(logoImg,240>>1,320>>1,Graphics.HCENTER | Graphics.VCENTER);
          150         g.drawString("是否開啟音樂?"731200);
          151         g.drawString(""53000);
          152         g.drawString(""2203000);
          153         
          154     }
          155     
          156     protected void process_MainMiglogo(int keyCode)//LOGO狀態邏輯處理
          157     {
          158         countTime++;
          159         if(countTime > 50)//20次循環后轉入菜單狀態
          160         {
          161             out_MainMiglogo();
          162             init_MainMenu();
          163         }
          164     }
          165     
          166     protected void key_MainMiglogo(int keyCode) //LOGO狀態邏輯處理
          167     {
          168         
          169     }
          170     
          171     protected void out_MainMiglogo() //退出LOGO狀態
          172     {
          173         
          174     }
          175     
          176      //***********************2***********************
          177     protected void init_MainMenu()//MENU狀態初始化
          178     {
          179         countTime = 0;
          180         main_state = ONE_MAIN_MENU;
          181     }
          182     
          183     protected void draw_MainMenu(Graphics g)//MENU狀態繪制
          184     {
          185         g.setClip(00240320);
          186         g.setColor(0x000000);
          187         g.fillRect(00240,320);//清屏
          188         g.setColor(0xffffff);
          189         g.drawString("this Menu"000);
          190         g.drawString(""+key_state, 0200);
          191     }
          192 
          193     protected void process_MainMenu(int keyCode) //MENU狀態邏輯
          194     {
          195         
          196     }
          197     
          198     protected void key_MainMenu(int keyCode)//MENU狀態退出
          199     {
          200         switch(key_state)
          201         {
          202         case DC_KEY_SOFT_LEFT:
          203                     threadRunAble = false;//關閉線程
          204                     myMIDlet.quitApp();//關閉程序
          205                     break;
          206         }
          207     }
          208 }
          209 
          210 

          myMIDlet.java

            1 package MyJava3;
            2 import javax.microedition.midlet.*;
            3 
            4 public class myMIDlet extends MIDlet
            5 {
            6     static myMIDlet instance;//生成一個靜態的myMIDlet的實例
            7     GameCanvas displayable;//創建一個myCanvas實例
            8     
            9     public myMIDlet()
           10     {
           11         instance = this;
           12     }
           13     
           14     public void startApp()//啟動(該方法必須存在)
           15     {
           16         displayable = new GameCanvas(this);
           17     }
           18     
           19     public void pauseApp()//暫停(該方法必須存在)
           20     {
           21         
           22     }
           23     
           24     public void destroyApp(boolean unconditional)//銷毀(該方法必須存在)
           25     {
           26         
           27     }
           28 
           29     public static void quitApp()//退出,此方法為JBuilder自動為我們生成,但不是必須的,你可以自定義其名稱和內容以完成退出功能
           30     {
           31         instance.destroyApp(true);
           32         instance.notifyDestroyed();
           33         instance = null;
           34     }
           35 }

               






















































































          posted on 2011-11-25 20:39 zhangwei 閱讀(253) 評論(0)  編輯  收藏 所屬分類: J2ME
          主站蜘蛛池模板: 江阴市| 五台县| 安新县| 舞阳县| 绥滨县| 大英县| 盱眙县| 阿巴嘎旗| 邓州市| 顺昌县| 霸州市| 华阴市| 锦屏县| 西丰县| 尼勒克县| 潼关县| 出国| 苍山县| 洞口县| 中牟县| 昌乐县| 建昌县| 陇南市| 连山| 永顺县| 溧水县| 伽师县| 砚山县| 宜春市| 满洲里市| 梁河县| 宜丰县| 扶绥县| 四子王旗| 潜江市| 康马县| 延寿县| 东山县| 长沙市| 渑池县| 临沭县|