自己总结的一个移动菜单方法,比较简陋哦

原创 2006年05月17日 01:51:00

应该有许多错误,,不过是自己的理解

Img _img;//需要建立Img类,读取图片文件
int _MenuX=32;//图象是333*96
_img= new Img("/menu.png", 5, 1, true);

void Update_Menu(Img _img,int _Menunum,int _MenuX,int _MenuY)
{
            Graphics g;     
            boolean _MenuMove;
            int menu;//临时记录菜单
            int _menuDir ;//控制方向

            _img.drawFrame(g, _kartX, _kartY, _kart,16+4);
            if(!_MenuMove && (_keyMap[4] > 0 || _keyMap[10] > 0))
            {
                _MenuMove = true;
                _menuDir = -1;//选择时菜单方向的控制1为向右,-1为向左
            } else
            if(!_MenuMove && (_keyMap[5] > 0 || _keyMap[12] > 0))
            {
                _MenuMove = true;
                _menuDir = 1;//选择时菜单方向的控制1为向右,-1为向左
            } else
            if(!_MenuMove)
                _menuDir = 0;
            if(_menuDir == -1)//选择时菜单方向的控制1为向右,-1为向左
            {
                _MenuX -= 20;//加载时选的3种车型的x位置,只是初位置
                if(_MenuX < -88)
                {
                    _MenuX = 172;
                    _menu--;
                    if(_menu< 0)
                        _menu = _Menunum;//一共几种菜单
                }
                if(_MenuX == 32)
                    _MenuMove = false;
            } else
            if(_menuDir == 1)
            {
                _MenuX += 20;
                if(_MenuX > 172)
                {
                    _MenuX = -88;
                    _menu++;
                    if(_menu >  _Menunum)
                        _menu= 0;
                }
                if(_MenuX == 32)
                    _MenuMove = false;
            }
            if(_ok)
            {
                _mainState =1;        //程序状态       
            }
            if(_back)
            {
                _menuState = 0;             
            }

img.java文件

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

public class Img
{

    static final int SCREENHEIGHT = 208;
    static final int SCREENWIDTH = 176;
    int dx;
    int dy;
    int he;
    Image im;
    Image im2;
    boolean loaded;
    String name;
    int px;
    int py;
    int wi;

    public Img(String s, int i, int j, boolean flag)
    {
        im2 = null;
        px = 1;
        py = 1;
        wi = 0;//显示图片的宽度
        he = 0;//显示图片的高度
        dx = 1;//图片所在的X坐标
        dy = 1;//图片所在的Y坐标
        name = s;//把图片的地址传过来
        px = i;//每行有几张图片
        py = j;//每列有几张图片
        im = null;//图片对象
        loaded = false;//没有加载
        if(flag)
            load();
    }

      void drawFrame(Graphics g, int i, int j, int k)
    {
        boolean flag = false;
        if(!loaded)
            load();
        if(loaded)
        {
            g.setClip(i, j, dx, dy);
            int l = k % px;
            if(l < 0)
                l = -l;
            int i1 = i - l * dx;
            int j1 = j - (k / px) * dy;
            if(flag)
                g.drawImage(im2, i1, j1, 0);
            else
                g.drawImage(im, i1, j1, 0);
        }
    }

    void drawFrame(Graphics g, int i, int j, int k, int l)
    {
        if(!loaded)
            load();
        if(loaded)
        {
            int i1 = 0;
            int j1 = 0;
            Graphics _tmp = g;
            if((l & 0x20) != 0)
                j1 = 204 - dy;
            Graphics _tmp1 = g;
            if((l & 0x8) != 0)
                i1 = 176 - dx;
            Graphics _tmp2 = g;
            if((l & 0x2) != 0)
                i1 = (176 - dx) / 2;
            Graphics _tmp3 = g;
            if((l & 0x1) != 0)
                j1 = (204 - dy) / 2;
            drawFrame(g, i1 + i, j1 + j, k);
        }
    }

    boolean load()
    {
        try
        {
            im = Image.createImage(name);
            wi = im.getWidth();
            he = im.getHeight();
            dx = wi / px;//图片宽度除以每行有几张照片,结果是单个图片的小宽度
            dy = he / py;//图像所在Y坐标
            loaded = true;
        }
        catch(Exception exception) { }
        return loaded;
    }
}

简陋的js菜单

对于js这种调试很困难的语言我真是很头疼,实现一个树状菜单也费了好大力气,干脆我把枝叶都去掉只留了个光杆,不能再去了为止.     var whichOpen="";  function menu...
  • logonin
  • logonin
  • 2007年09月11日 14:32
  • 352

如何制作简易菜单?

实现一个菜单组件包括下拉菜单和弹出菜单,实现框图如下:      创建下拉菜单的基本过程:    1).新建一个JFrame框架.JFrame frame=new JFrame();    2).新...
  • qq_34328833
  • qq_34328833
  • 2016年11月22日 18:27
  • 689

一个比较简陋的动态标题栏

没什么说的,就是一个代码整理。 先来看一下效果图: 标题少的: 标题多的: 因为最近两个项目都有类似效果,所以这里整理了一下代码。实现代码借鉴了 PagerSlidingTabStrip.比较...
  • lv_fq
  • lv_fq
  • 2016年11月14日 23:06
  • 1420

P279_1017 写一函数,实现两个字符串的比较,即自己写一个strcmp函数

标签:c it 分类:C练习 #include #include #include #include #define LENGTH 20 #define INCREMENT 10 int...
  • jingzhewangzi
  • jingzhewangzi
  • 2014年08月29日 22:26
  • 1302

写给自己的年终总结

今天是大年二十八,公司放假了, 明天就可以回家了。每年的年底都是最伤感的时候。父母又老了一岁,自己也又长了一岁。但是一年一年的过去了,依旧是一事无成。电视上的各种年终晚会上, 主持人都会说“过去的一年...
  • brave2211
  • brave2211
  • 2014年01月28日 22:55
  • 3288

你了解多少?从设计开始详解移动电源

转载自:http://www.elecfans.com/article/83/116/2013/20130607320421_7.html
  • chenbang110
  • chenbang110
  • 2014年05月11日 08:47
  • 3191

一个比较简陋的命令行socket聊天程序

server.c #include #include #include #include "zjfdll.h" DWORD WINAPI SendProc(PVOID pParam) { ...
  • nbda1121440
  • nbda1121440
  • 2012年05月05日 12:38
  • 1558

精美菜单,自己动手的哦(附图)

几个同事聚餐,每人做一个自己拿手的菜!因为临时召集,没人带数码相机,只好用手机照了,呵呵(30万象素,凑合着看看啦,重要的是纪念)。**********************************...
  • samara
  • samara
  • 2004年11月08日 16:29
  • 2286

几种查找方法的介绍与比较

...
  • terence427
  • terence427
  • 2007年10月15日 09:37
  • 1027

写一函数,实现两个字符串的比较,即自己写一个strcmp函数

/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 ...
  • liubinzi123
  • liubinzi123
  • 2012年12月08日 08:48
  • 26191
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自己总结的一个移动菜单方法,比较简陋哦
举报原因:
原因补充:

(最多只允许输入30个字)