龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

J2ME中调用Canvas制作游戏菜单(1)

时间:2013-03-06 14:58来源:未知 作者:admin 点击:
分享到:
你对J2ME中使用Canvas制作简单的游戏菜单是否熟悉,这里和大家分享一下,我们知道MIDP的图形用户界面分为两类,分别是高级图形用户界面和低级用户界面。一般来讲高级图形用户界面

你对J2ME中使用Canvas制作简单的游戏菜单是否熟悉,这里和大家分享一下,我们知道MIDP的图形用户界面分为两类,分别是高级图形用户界面和低级用户界面。一般来讲高级图形用户界面类使用起来比较方便,可移植性强,但是程序员对他的控制能力也很低,因为它们的界面表现是由底层控制的,而不是我们控制的。

J2ME中使用Canvas制作简单的游戏菜单

我们知道MIDP的图形用户界面分为两类,分别是高级图形用户界面和低级用户界面。一般来讲高级图形用户界面类使用起来比较方便,可移植性强,但是程序员对他的控制能力也很低,因为它们的界面表现是由底层控制的,而不是我们控制的。相比高级UI类,低级UI类则使用起来更难一些,但是控制能力更强,可以做出自己需要的界面。

Canvas和Graphics是我们必须熟练使用的两个类,分别代表了画布和画笔(事实上更丰富,姑且这么比喻)。而我们则是画画的人,而指导我们如何下笔的就是Javadoc了,再加上勤奋努力一定可以画出不错的界面。比如tabbed菜单,二级菜单等。这里我们讲述一个简单菜单的制作方式。

在画菜单的时候,需要考虑两面的问题,第一是计算相对位置,让菜单能够尽可能适应更多的机型,尽量少使用绝对值。例如画下面的菜单的时候

我们应该计算菜单的每个条目的高度,这些可以有Font的高度算出,当然你可以给条目留一些padding的距离。还应该计算条目的最宽值,毕竟每个条目的字数不一样。这样基本知道了整个菜单占的空间。最后还需要计算菜单在屏幕的位置。菜单的绘制如下所示:

Java代码

  1. publicvoidpaint(Graphicsg){  
  2.  
  3. //清除屏幕  
  4.  
  5. intcolor=g.getColor();  
  6.  
  7. g.setColor(0xFFFFFF);  
  8.  
  9. g.fillRect(0,0,getWidth(),getHeight());  
  10.  
  11. g.setColor(color);  
  12.  
  13. //计算整个菜单的高度,宽度和(x,y)  
  14.  
  15. intrectWidth=preferWidth;  
  16.  
  17. intrectHeight=preferHeight*LABELS.length;  
  18.  
  19. intx=(getWidth()-rectWidth)/2;  
  20.  
  21. inty=(getHeight()-rectHeight)/2;  
  22.  
  23. //画矩形  
  24.  
  25. g.drawRect(x,y,rectWidth,rectHeight);  
  26.  
  27. for(inti=1;i<LABELS.length;i++){  
  28.  
  29. g.drawLine(x,y+preferHeight*i,
  30. x+rectWidth,y+preferHeight*i);  
  31.  
  32. }  
  33.  
  34. //画菜单选项,并根据selected的值判断焦点  
  35.  
  36. for(intj=0;j<LABELS.length;j++){  
  37.  
  38. if(selected==j){  
  39.  
  40. g.setColor(0x6699cc);  
  41.  
  42. g.fillRect(x+1,y+j*preferHeight+1,
  43. rectWidth-1,preferHeight-1);  
  44.  
  45. g.setColor(color);  
  46.  
  47. }  
  48.  
  49. g.drawString(LABELS[j],x+8,y+j*preferHeight+4,
  50. Graphics.LEFT|Graphics.TOP);  
  51.  
  52. }  
  53.  
  54. }  
  55.  
  56.  
  57.  

精彩图集

赞助商链接