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

📄 menu.java~9~

📁 这是个功能比较多的RPG 但是也存在比较多的BUG 有待完善中
💻 JAVA~9~
字号:
package Game;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.Canvas;



public class Menu
{
       MyCanvas mc;
     int         Frame = 1;          //起始状态,通过按键控制当前选项
     int         nowFrame = 1;       //按下确定键时的当前状态
     boolean     confirm = false;    //判断是否按下确定键
     int         t2 = 0;             //用来限制从按下确定到下一个页面显示之间的时间
     int         t1 = 0;             //用来限制移动百宝箱和移动LOGO的加载时间
     boolean     start = true;
     int         alpha = 0;          //做渐变效果
     int         px[]={0,176,176,0};
     int         py[]={0,0,208,208};
     boolean     isStarted = false;  //是否开始进行游戏
     boolean     canSelect = true;  //是否允许选择菜单

    public Menu(MyCanvas mc)
    {
     this.mc = mc;

    }

    public void drawHelp(Graphics g)
    {

    }

    public void drawLOGO(Graphics g)
    {
        g.setClip(0, 0, 176, 208);
        g.drawImage(mc.image.img_BattleBG, 0, 0, 0);
        if(!confirm)//没有按下确定的时候加载翅膀合拢的图片
        {
            g.setClip(60, 105, 59, 81);
            g.drawImage(mc.image.img_menuButton1, 60 - (this.Frame - 1) * 59, 105, 0);
        }
        else    //按下确定之后加载翅膀展开的图片
        {
            g.setClip(22, 105, 138, 81);
            g.drawImage(mc.image.img_menuButton2, 22 - (this.Frame - 1) * 138, 105, 0);
            nowFrame = Frame;
        }
    }

    public void draw(Graphics g)
    {
        run();


        if(t1 <= 30)    //显示第一张移动百宝箱 LOGO
        {
            g.setColor(255, 255, 255);
            g.fillRect(0, 0, 176, 208);
            g.setClip(30, 66, 116, 75);
            g.drawImage(mc.image.img_logo1, 30, 66, 0);
        }
        else if(t1 > 30 && t1 <= 55)    //显示第二张移动百宝箱 LOGO
        {
            g.setClip(0, 0, 176, 208);
            g.drawImage(mc.image.img_logo2, 0, 0, 0);
        }
        else    //显示菜单
        {
            drawLOGO(g);
            start = false;
        }
        switch(nowFrame)
        {
            case 1: //start
                g.setClip(0, 0, 176, 208);

                if (t2 > 15)
                {
                    System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
                    setGameStarted(true);
                    confirm = false;
                }
                break;
            case 2: //read
                //未完成,需要用到数据仓库暂时搁置
                break;
            case 3: //help
                g.setClip(0, 0, 176, 208);

                if (t2 > 15)
                {
                    drawHelp(g);
                    confirm = false;
                }
                break;
            case 4: //about
                //未完成
                break;
            case 5: //exit

                break;
        }
    }

    public void run()
    {
        if(start)   //标志一开始的时候显示移动和百宝箱的LOGO
        {
            t1++;
            if (t1 > 60)
                t1 = 0;
        }
        else if (confirm) //标志按下确定键后控制进入下一个画面的时间差,渐变
        {
            t2++;
            if (t2 > 20)
                t2 = 0;
            if (alpha < 255)
            {
                alpha += 17;
            }
            else
            {
                confirm = false;
                alpha = 255;
            }
        }
    }

    public void reset()
    {
        Frame = 1;          //起始状态,通过按键控制当前选项
        nowFrame = 1;       //按下确定键时的当前状态
        confirm = false;    //判断是否按下确定键
        t2 = 0;             //用来限制从按下确定到下一个页面显示之间的时间
        t1 = 56;            //用来限制移动百宝箱和移动LOGO的加载时间
        start = false;
        alpha = 0;          //做渐变效果
        isStarted = false;  //是否开始进行游戏
        canSelect = true;   //是否允许选择菜单
    }

    public void setGameStarted(boolean isStarted)
    {
        isStarted = isStarted;
    }

    public boolean isGameStarted()
    {
        return isStarted;
    }

    public void keyPressed(int key)
    {

        if (!start && canSelect)   //移动LOGO显示完后才响应菜单选择,同时正在渐变效果时不能选择
        {
            switch(key)
            {
                case Canvas.UP:
                    Frame -= 1;
                    if (Frame < 1)
                        Frame = 5;
                    break;
                case Canvas.DOWN:
                    Frame += 1;
                    if (Frame > 5)
                        Frame = 1;
                    break;
                case Canvas.FIRE:
                    confirm   = true;
                    canSelect = false;
                    break;
            }
        }
        if (!start)
        {
            if (key == 0)   //按下右键或左键、1 键、3 键、0 键,返回菜单
            {
                nowFrame = 0;
                Frame    = 1;     //返回菜单时显示第一项“进入游戏”
                t2       = 0;
                alpha    = 0;
                canSelect = true;
            }
        }
    }
}

⌨️ 快捷键说明

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