J2ME中操纵Canvas制作简单的游戏菜单[Java编程]
本文“J2ME中操纵Canvas制作简单的游戏菜单[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
我们知道MIDP的图形用户界面分为两类,辨别是高级图形用户界面和初级用户界面.普通来说高级图形用户界面类利用起来对比便利,可移植性强,但是程序员对他的掌握本领也很低,因为它们的界面表现是由底层掌握的,而不是我们掌握的.相比高级UI类,初级UI类则利用起来更难一些,但是掌握本领更强,可以做出自己需求的界面.
Canvas和Graphics是我们必须纯熟利用的两个类,辨别代表了画布和画笔(事实上更丰富,姑且这么比方).而我们则是画画的人,而指导我们若何下笔的就是java doc了,再加上勤奋勤奋一定可以画出不错的界面.比方tabbed菜单,二级菜单等.这里我们报告一个简单菜单的制作方法.
在画菜单的时刻,需求考虑两面的问题,第一是计算相对位置,让菜单可以尽大概适应更多的机型,尽大概少利用绝对值.比方画下面的菜单的时刻
我们应当计算菜单的每个条目的高度,这些可以有Font的高度算出,当然你可以给条目留一些padding的距离.还应当计算条目的最宽值,毕竟每个条目的字数不一样.这样基本知道了整个菜单占的空间.最后还需求计算菜单在屏幕的位置.菜单的绘制以下所示:
public void paint(Graphics g){
//排除屏幕
int color = g.getColor();
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(color);
//计算整个菜单的高度,宽度和(x,y)
int rectWidth = preferWidth;
int rectHeight = preferHeight * LABELS.length;
int x = (getWidth()-rectWidth)/2;
int y = (getHeight()-rectHeight)/2;
//画矩形
g.drawRect(x,y,rectWidth,rectHeight);
for(int i = 1;i<LABELS.length;i++){
g.drawLine(x,y+preferHeight*i,x+rectWidth,y+preferHeight*i);
}
//画菜单选项,并按照selected的值判断核心
for(int j = 0;j<LABELS.length;j++){
if(selected == j){
g.setColor(0x6699cc);
g.fillRect(x+1,y+j*preferHeight+1,rectWidth-1,preferHeight-1);
g.setColor(color);
}
g.drawString(LABELS[j],x+8,y+j*preferHeight+4,Graphics.LEFT|Graphics.TOP);
}
}
第二个重要的问题是:核心的切换,在高级UI类中,这是不需求我们处理的.但是利用Canvas制作菜单需求自己来处理核心的移动,这里我们定义一个int范例变量selected,来记录核心所在的菜单条目位置,也就是挑选的索引.当用户按键的时刻,我们在keyPressed()办法中判断用户的移动方向,对selected举行相关的加减运算,然后repaint()整个屏幕便可.
public void keyPressed(int keyCode){
//按照用户输入更新selected的值,并重新绘制屏幕
int action = this.getGameAction(keyCode);
switch(action){
case Canvas.FIRE:
printLabel(selected);
break;
case Canvas.DOWN:
selected = (selected+1)%4;
break;
case Canvas.UP:{
if(--selected < 0){
selected+=4;
}
break;
}
default:
break;
}
repaint();
serviceRepaints();
}
以上是“J2ME中操纵Canvas制作简单的游戏菜单[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |