<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    游戲策劃咨訊
    做一個游戲并不難,難的是做一個好游戲;完美在于積累!
    漂亮的游戲開始畫面

    介紹一個游戲開始的畫面。
    先建兩個類 MenuScreen.java  SimpleCustomMenuWithBGFont.java用于測試


    首先說下SimpleCustomMenuWithBGFont.java


    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    //import java.util.*;


    public class SimpleCustomMenuWithBGFont extends MIDlet implements CommandListener {


      Display display;
      Display pauseDisplay;
      boolean isSplash = true;
      MenuScreen menuScreen;


      public SimpleCustomMenuWithBGFont() {
        MenuScreen menuScreen = new MenuScreen();
        display = Display.getDisplay(this);
        display.setCurrent(menuScreen);
      }


      protected void startApp() throws MIDletStateChangeException   {
      }


      protected void pauseApp() {  }
      protected void destroyApp (boolean flag) throws MIDletStateChangeException {}


      public void commandAction (Command cmd, Displayable dis) {


      }
    }
    這個類很簡單,就是作為了測試使用的。


    主要來介紹一下MenuScreen.java



    import javax.microedition.lcdui.*;


    public class MenuScreen extends Canvas implements Runnable {


      // 設置字體
      static final Font lowFont  = Font.getFont (Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL);
      static final Font highFont = Font.getFont (Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM);
      static final int NEW_GAME = 0;
        static final int HIGH_SCORE = 1;
        static final int SETTINGS = 2;
        static final int HELP = 3;
        static final int ABOUT = 4;
        static final int MENU_ITEM_COUNT = 5;


      // 設置顏色
      static final int lowColor  = 0x0000FF00;    // Not Highlighted
      static final int highColor = 0x000000FF;    // Highlighted
      static final int highBGColor = 0x00CCCCCC;  // Highlighted Background



      static int width;   //屏幕寬
      static int height;  // 屏幕高


      static int startHeight;  // 菜單開始的高度


      static final int spacing = highFont.getHeight()/2;  // 菜單項間的距離
      // 菜單項
      static final String[] mainMenu = {"New Game","High Score","Settings","Help","About"};
      // 當前高亮顯示的索引號
      static int menuIdx;
      Thread thread;
      // 背景圖
      Image bgImage;
      //構造
      public MenuScreen() {
        width = getWidth();
        height = getHeight();
        // 計算菜單開始的高度
        startHeight = (highFont.getHeight() * mainMenu.length) + ((mainMenu.length-1) * spacing);
        startHeight = (height - startHeight) / 2;
        // 默認所選為菜單的第一項
        menuIdx = 0;
        try {
          bgImage = Image.createImage("/res/bg.png");
        } catch (Exception e) {}


        thread = new Thread(this);
        thread.start();
      }
      public void run() {
        while(true) {
          repaint();
        }
      }
    public void paint(Graphics g) {
    //清屏
        g.setColor(0x00000000);
        g.fillRect(0,0,width,height);
    // 背景
        g.drawImage(bgImage,(width - bgImage.getWidth()) / 2, (height - bgImage.getHeight())/2,20);
        for (int i=0; i<mainMenu.length; i++) {
          if (i==menuIdx) {
           //g.setColor(highBGColor);
           //g.fillRect(0,startHeight + (i*highFont.getHeight()) + spacing,width,highFont.getHeight());
            g.setFont(highFont);
            g.setColor(highColor);
            g.drawString(mainMenu,
                         (width - highFont.stringWidth(mainMenu)) / 2,
                          startHeight + (i*highFont.getHeight()) + spacing,
                          20
                         );



          } else {
            g.setFont(lowFont);
            g.setColor(lowColor);
            g.drawString(mainMenu,
                         (width - lowFont.stringWidth(mainMenu)   ) / 2,
                         startHeight + (i*highFont.getHeight()) + spacing,
                         20
                        );
          }
        }
      }



      protected void keyPressed (int code) {
        if (getGameAction(code) == Canvas.UP && menuIdx - 1 >= 0) {
          menuIdx--;
        } else if (getGameAction(code) == Canvas.DOWN && menuIdx + 1 < mainMenu.length) {
          menuIdx++;
        }else if (getGameAction(code) == Canvas.FIRE)
        switch(menuIdx) {
             case NEW_GAME:   System.out.println("Start New Game"); break;
             case HIGH_SCORE: System.out.println("Display High Score"); break;
             case SETTINGS:   System.out.println("Display Settings"); break;
             case HELP:       System.out.println("Display Help"); break;
             case ABOUT:      System.out.println("Display About Info."); break;
           }


      }
    }


    順便這里介紹一下J2ME中的字體:
    字體的屬性由:字體類型,風格和字體大小構成,請注意顏色并不是字體的屬性。字體
    類型由Form類中的靜態常量進行定義,可能的取值:
    FACE_MONOSPACE: 等寬字體
    FACE_PROPORTIONAL: 比例字體,非常寬
    FACE_SYSTEM: 系統字體


    字體風格由Font 類中的靜態常量進行定義,字體風格是可以多選的,可能的取值為:
    STYLE_BOLD : 加粗
    STYLE_ITALIC :斜體
    STYLE_PLAIN :常規
    STYLE_UNDERLINED:帶下劃線字體


    字體由Font 類中的靜態常量進行定義,可能的取值為:
    SIZE_LARGE: 大號字體
    SIZE_MEDIUM: 中號字體
    SIZE_SMALL: 小號字體


    創建字體時并不是通過Font 類的構造方法來創建,而是利用Font類的靜態方法
    static Font getFont(int face,int style,int size)來創建字體。或者利用
    static font getDefauleFont()來創建系統默認字體。
    在MIDP v2.0中,為Font類增加了新的一個方法用于創建字體,即 static Font
    getFont(int fontSpecifier),參數fontSpecifier的取值范圍被定義為Font類
    的靜態常量,目前只能由倆種取值:
    FONT_STATIC_TEXT:靜態文本字體,定義了屏幕顯示時設備采用的字體
    FONT_INPUT_TEXT:輸入文體,定義了在用戶輸入時設備采用的字體
    在顯示文字時,如果文字過長而超過當前屏幕的寬度,那么多余的部分將無法顯示,
    所以為了有效地顯示文字可以用檢測字符或者字符串的寬度的方法,由程序判斷每
    行輸出的字符數,來達到更好的顯示效果.

    posted on 2005-04-08 19:01 藍色雪焰 閱讀(540) 評論(0)  編輯  收藏 所屬分類: 編程技術
     
    主站蜘蛛池模板: 亚洲 小说区 图片区 都市| 免费看又爽又黄禁片视频1000| 亚洲一区精品伊人久久伊人| 亚洲欧美自偷自拍另类视| 一二三四视频在线观看中文版免费| 久久精品国产亚洲av麻豆小说 | 国产精品亚洲片在线观看不卡 | 久久青草免费91观看| 亚洲精品无码高潮喷水在线| 99在线热播精品免费99热| 亚洲情XO亚洲色XO无码| 久久成人a毛片免费观看网站| 亚洲精品高清久久| 亚欧免费视频一区二区三区| 亚洲一区无码中文字幕乱码| 成年女人免费视频播放体验区| 亚洲AV永久无码精品一福利 | 亚洲AV永久无码区成人网站 | 免费毛片在线看片免费丝瓜视频| 亚洲综合激情五月色一区| 国产免费观看网站| 国产免费人成视频在线播放播| 亚洲AV日韩AV永久无码久久| 日本片免费观看一区二区| 亚洲日本一线产区和二线| 亚洲日韩国产成网在线观看| 免费看又黄又无码的网站| 亚洲综合校园春色| 亚洲国产天堂久久综合| 亚洲免费在线播放| 亚洲精品GV天堂无码男同| 亚洲综合色区在线观看| 88av免费观看入口在线| 亚洲AV无码一区二区三区牲色 | 国产偷国产偷亚洲高清人| 亚洲精品无码永久在线观看你懂的| 亚洲视频在线免费播放| 亚洲欧美国产国产综合一区| 亚洲欧洲美洲无码精品VA | 成人免费看黄20分钟| 伊人免费在线观看高清版|