<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類中的靜態(tài)常量進行定義,可能的取值:
    FACE_MONOSPACE: 等寬字體
    FACE_PROPORTIONAL: 比例字體,非常寬
    FACE_SYSTEM: 系統(tǒng)字體


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


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


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

    posted on 2005-04-08 19:01 藍色雪焰 閱讀(541) 評論(0)  編輯  收藏 所屬分類: 編程技術
     
    主站蜘蛛池模板: 免费一级毛片正在播放| 午夜影院免费观看| 麻豆va在线精品免费播放| 亚洲日韩AV无码一区二区三区人| 亚洲成在人线中文字幕| 亚洲网址在线观看| 亚洲欧洲视频在线观看| 亚洲国产精品yw在线观看| 亚洲精品**中文毛片| 亚洲国产视频网站| 国产精品久久亚洲不卡动漫| 亚洲入口无毒网址你懂的| 亚洲午夜无码毛片av久久京东热| 亚洲一日韩欧美中文字幕在线| 亚洲精品美女久久7777777| 久久久久亚洲国产AV麻豆| 特级毛片A级毛片免费播放| 免费国产va在线观看| 久久精品免费网站网| 最近2019中文免费字幕在线观看| 午夜免费福利片观看| 免费精品国产日韩热久久| 成人免费无码大片A毛片抽搐 | 亚欧乱色国产精品免费视频| 国产精品免费一区二区三区 | 亚洲精华液一二三产区| 国产精品久久久久久亚洲影视| 无遮挡呻吟娇喘视频免费播放| 不卡视频免费在线观看| 免费无码一区二区三区 | www永久免费视频| 免费日本一区二区| 日韩视频在线精品视频免费观看 | 69影院毛片免费观看视频在线| 成人男女网18免费视频| 久久久久国产成人精品亚洲午夜| 亚洲av鲁丝一区二区三区| 亚洲国产成人在线视频| 青青青亚洲精品国产| 国产无遮挡裸体免费视频在线观看| 日本片免费观看一区二区|