<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)  編輯  收藏 所屬分類: 編程技術
     
    主站蜘蛛池模板: 国产免费人成在线视频| 中文字幕免费高清视频| 日韩午夜免费视频| 久久精品国产亚洲av麻豆蜜芽| 免费A级毛片av无码| 久久久久亚洲AV无码麻豆| 免费福利在线视频| 亚洲成av人影院| 精品无码无人网站免费视频| 久久亚洲熟女cc98cm| 亚欧人成精品免费观看| 亚洲AV成人无码天堂| 成人人免费夜夜视频观看| 欧美激情综合亚洲一二区| 免费在线观看视频a| 中文字幕乱理片免费完整的| 亚洲av中文无码乱人伦在线咪咕 | 国产香蕉免费精品视频| 久久国产亚洲精品| 日本免费人成视频播放| 男人扒开添女人下部免费视频| 亚洲一级Av无码毛片久久精品| 香蕉免费看一区二区三区| 久久香蕉国产线看观看亚洲片| 99视频全部免费精品全部四虎| 亚洲依依成人亚洲社区| 亚洲高清视频一视频二视频三| 波多野结衣免费一区视频| 亚洲成人动漫在线观看| 免费播放特黄特色毛片| 美女视频黄的免费视频网页 | 精品国产免费一区二区三区| 亚洲AV日韩AV永久无码久久| 99精品国产免费久久久久久下载| 亚洲av日韩综合一区久热| 中文字幕亚洲综合久久菠萝蜜| 热re99久久6国产精品免费| 亚洲av成人一区二区三区观看在线 | 亚洲AV第一成肉网| 午夜影视日本亚洲欧洲精品一区| a级毛片无码免费真人|