📄 menucontrol.java
字号:
package com.tianxia.qipai.view.game.gobang;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
public class MenuControl {
private int menustate;
private Sprite menusprite; //菜单精灵
private Sprite menudetailsprite;//详细菜单精灵
private Sprite selectrectsprite;//用户选择提示框精灵
private int menuheight; //menu图片的宽度和高度
private int detailheight; //详细菜单的图片的宽度和高度
private int tileheight; //详细菜单的单元图片的宽度和高度
private int statenum;//菜单选项的个数
private int moveheight; //菜单控件已经移动的垂直距离
private int movewidth; //菜单控件已经移动的水平距离
private boolean menuvisible; //菜单是否可见
private Runtime rt;
public MenuControl(Image menuimage,Image detailimage,int tilewidth,int tileheight) {
super();
rt = Runtime.getRuntime();
moveheight = 0;
movewidth = 0;
menuheight = menuimage.getHeight();
detailheight = detailimage.getHeight();
menusprite = new Sprite(menuimage);
menuimage = null;
menudetailsprite = new Sprite(detailimage);
detailimage = null;
this.tileheight = tileheight;
Image rectimage = Image.createImage(tilewidth,tileheight);
Graphics gra = rectimage.getGraphics();
gra.setColor(0,0,0);
gra.drawRect(0,0,tilewidth-1,tileheight-1);//画边框
rectimage = setImageAlph(rectimage,true);
selectrectsprite = new Sprite(rectimage);
rectimage = null;
rt.gc();
// TODO 自动生成构造函数存根
}
public void init(LayerManager lm,int statenum,int mainwidth,int mainheight){
this.statenum = statenum;
menustate = 0;
menusprite.setPosition(0,mainheight-menuheight);
menudetailsprite.setPosition(0,mainheight-detailheight);
selectrectsprite.setPosition(0,mainheight-tileheight);
lm.insert(menusprite,0);
lm.insert(menudetailsprite,0);
lm.insert(selectrectsprite,0);
menusprite.setVisible(true);
menudetailsprite.setVisible(false);
selectrectsprite.setVisible(false);
menuvisible = false;
lm = null;
rt.gc();
}
// 重新调整控件在层中的位置
public void ResetPosition(int height,int width){
moveheight = moveheight+height;
movewidth = movewidth+width;
menusprite.setPosition(menusprite.getX()+width,menusprite.getY()+height);
menudetailsprite.setPosition(menudetailsprite.getX()+width,menudetailsprite.getY()+height);
selectrectsprite.setPosition(selectrectsprite.getX()+width,selectrectsprite.getY()+height);
}
//重新设置菜单的图片
public void ReSetImage(Image menuimage,Image detailimage,int tilewidth,int tileheight){
menuheight = menuimage.getHeight();
detailheight = detailimage.getHeight();
menusprite = new Sprite(menuimage);
menudetailsprite = new Sprite(detailimage);
this.tileheight = tileheight;
Image rectimage = Image.createImage(tilewidth,tileheight);
Graphics gra = rectimage.getGraphics();
gra.setColor(0,0,0);
gra.drawRect(0,0,tilewidth-1,tileheight-1);//画边框
rectimage = setImageAlph(rectimage,true);
selectrectsprite = new Sprite(rectimage);
rectimage = null;
rt.gc();
}
//重新初始化菜单的位置
public void ReInit(){
menusprite.setPosition(menusprite.getX()+movewidth,menusprite.getY()+moveheight);
menudetailsprite.setPosition(menudetailsprite.getX()+movewidth,menudetailsprite.getY()+moveheight);
selectrectsprite.setPosition(selectrectsprite.getX()+movewidth,selectrectsprite.getY()+moveheight);
}
//返回当前菜单的具体菜单项
public int getmenustate(){
return this.menustate;
}
public boolean getvisibleflag(){
return this.menuvisible;
}
//不显示详细菜单
public void toHide(){
menuvisible = false;
menusprite.setVisible(true);
menudetailsprite.setVisible(false);
selectrectsprite.setVisible(false);
while(menustate != 0){
menustate = menustate -1;
selectrectsprite.setPosition(selectrectsprite.getX(),selectrectsprite.getY()+tileheight);
}
}
//显示详细菜单
public void toShow(){
menuvisible = true;
menusprite.setVisible(false);
menudetailsprite.setVisible(true);
selectrectsprite.setVisible(true);
}
//用户选择向上一个菜单项
public void toUp(){
if(menustate<statenum-1){
menustate++;
selectrectsprite.setPosition(selectrectsprite.getX(),selectrectsprite.getY()-tileheight);
}
}
// 用户选择向下一个菜单项
public void toDown(){
if(menustate>0){
menustate--;
selectrectsprite.setPosition(selectrectsprite.getX(),selectrectsprite.getY()+tileheight);
}
}
public void setNull(){
selectrectsprite = null; //选种框精灵
menusprite = null; //主菜单精灵
menudetailsprite = null; //详细菜单精灵
}
// 将图片变透明(true: 全透明 false:半透明)
private Image setImageAlph(Image orignImage,boolean alphflag){
Image tempimage = null;
int tempwidth= 0;
int tempheight = 0;
tempwidth = orignImage.getWidth();
tempheight = orignImage.getHeight();
int temprect[]= new int[tempwidth*tempheight];
orignImage.getRGB(temprect,0,tempwidth,0,0,tempwidth,tempheight);
orignImage = null;
for(int i = 0;i<tempwidth*tempheight;i++){
if(temprect[i]==0xffffffff) //将白底的图片变透明
if(alphflag)
temprect[i]=temprect[i]&0x00ffffff;
else
temprect[i]=temprect[i]&0xaaffffff;
}
tempimage = Image.createRGBImage(temprect,tempwidth,tempheight,true);
return tempimage;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -