⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menucanvas.java

📁 格斗类型的游戏
💻 JAVA
字号:

import com.nokia.mid.ui.FullCanvas;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Image;


 public class MenuCanvas extends FullCanvas
    {
        //游戏中所指向的菜单类型 0:主菜单 1:游戏中菜单 2:游戏模式菜单
        private byte canvasFlg = 0;
        private DragonSoul inc;
        //菜单的索引值
        private int selectedIndex;
        private int width;
        private Image title = null;
        private Image rect = null;
        private String menu[][] = {
            {
                "开始", "设置", "帮助", "关于", "退出"
            }, {
                "继续", "帮助", "主菜单"
            }, {
                "训练模式", "对战模式", "故事模式", "生存模式"
            }
        };
//        private String button[][] = {
//            {
//                "选择", ""
//            }, {
//                "选择", "返回"
//            }, {
//                "选择", "返回"
//            }
//        };

    /**
     * 菜单类构造函数
     * @param inc DragonSoul,入口类对象
     */
        public MenuCanvas(DragonSoul inc) {
            this.inc = inc;
            try {
                title = Image.createImage("/title.png");
                rect = Image.createImage("/rec.png");
            } catch (Exception e) {}
        }

    /**
     * 菜单类初始化
     * @param byte0 byte,菜单类型
     */
        public void initliza(byte byte0)
        {
            canvasFlg = byte0;
            selectedIndex = 0;
            if(byte0 < 2) {
                //GC = getWidth() / 5;
                width = getWidth() / 3 + 5;
            } else {
                //GC = getWidth() / 6;
                width = getWidth() / 4 + 10;
            }
        }

    /**
     * 设定菜单的索引值
     * @param i1 int,菜单的索引值
     */
        public void setSelectedIndex(int i1) {
            selectedIndex = i1;
        }

        protected void showNotify() {
            inc.loadLights();
        }

        /**
        * 压下按键事件响应
        * @param i1 int, 按键代码
        */
        protected void keyPressed(int i1)
        {
            if( i1 == -1) {
                selectedIndex = selectedIndex <= 0 ? menu[canvasFlg].length - 1 : selectedIndex - 1;
                repaint();
                serviceRepaints();
                return;
            }
            if( i1 == -2) {
                selectedIndex = selectedIndex >= menu[canvasFlg].length - 1 ? 0 : selectedIndex + 1;
                repaint();
                serviceRepaints();
                return;
            }
            if(i1 == 53 || i1 == -6 || i1 == getKeyCode(8)) {
                executeMenu(i1);
                //System.gc();
            }
            if(i1 == -7) {
                if(canvasFlg == 1)
                {
                    selectedIndex = 0;
                    executeMenu(i1);
                    //System.gc();
                }
                if(canvasFlg == 2)
                {
                    executeMenu(i1);
                    //System.gc();
                }
            }
        }

        /**
         * 绘制菜单选项
         * @param g1 Graphics
         */
        protected void paint(Graphics g1) {
            int width = getWidth();
            int height = getHeight();
            g1.setClip(0, 0, width, height);
            g1.setFont(Font.getFont(64, 1, 8));
            if (canvasFlg == 0) {                
                g1.drawImage(title, 0, 0, 0);
                g1.drawImage(rect, width/2, 115, Graphics.HCENTER | Graphics.TOP);
                for(int j1 = 0; j1 < menu[canvasFlg].length; j1++) {
                    g1.setColor(0x993300);
                    g1.drawString(menu[canvasFlg][selectedIndex], width/2, 155,  Graphics.HCENTER | Graphics.TOP);
                }
            } else {
                g1.setColor(0xffffff);
                g1.fillRect(0, 0, width, height);
                for(int i1 = 0; i1 < (width - 1)/ inc.menuBk.getWidth() + 1; i1++)
                    g1.drawImage(inc.menuBk, i1 * inc.menuBk.getWidth(), 0, 0x10 | 0x4);

                for(int j1 = 0; j1 < menu[canvasFlg].length; j1++) {
                    int l1 = 27 + 17 * (j1 + 1);
                    g1.setColor(0);
                    g1.drawString(menu[canvasFlg][j1], this.width + 6, l1, 0x20 | 0x4);
                    g1.setColor(0x993300);
                    g1.drawString(menu[canvasFlg][j1], (this.width + 6) - 1, l1 - 1, 0x20 | 0x4);
                }
                int k1 = (30 + 17 * (selectedIndex + 1)) - inc.fistImage.getHeight() / 1;
                g1.drawImage(inc.fistImage, this.width - 12, k1  - 4, 0x10 | 0x4);
//                g1.setClip(0, 0, width, height);
//                g1.drawImage(inc.width, 0, height, 0x20 | 0x4);
//                g1.drawImage(inc._fldif, width, height, 0x20 | 0x8);
            }
        }

        /**
         * 执行菜单命令
         * @param _fldvoid int,按键代码
         */
        public void executeMenu(int _fldvoid)
        {
            if (_fldvoid == -7) {
                if(canvasFlg == 1)
                   inc.backToGame();
                else
                if(canvasFlg == 2)
                    inc.backToMenu();
            } else if (canvasFlg == 0)
                switch(selectedIndex)
                {
                case 0: // '\0'
                    inc.initModeMenu();
                    break;

                case 1: // '\001'
                   inc.initSettingMenu();
                    break;

                case 2: // '\002'
                   inc.bGameHelp = false;
                   inc.initHelp1Menu();
                    break;

                case 3: // '\003'
                    inc.initHelp2Menu();
                    break;

                case 4: // '\004'
                    {
                        LogoCanvas o = new LogoCanvas(DragonSoul.inc, 3);
                        o.startThr();
                        Display.getDisplay(DragonSoul.inc).setCurrent(o);
                        //DragonSoul.exitApp();
                    }
                    break;
                }
            else if (canvasFlg == 1)
                switch(selectedIndex)
                {
                case 0: // '\0'
                    inc.backToGame();
                    break;

                case 1: // '\001'
                    inc.pauseGame();
                    break;

                case 2: // '\002'
                    inc.backToMenu();
                    break;
                }
            else if(canvasFlg == 2) {
                inc.setN(3);
                inc.saveIndex(selectedIndex);
                inc.initPlayer();
            }
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -