精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

J2ME中調(diào)用Canvas制作游戲菜單

開(kāi)發(fā) 前端
本文向大家簡(jiǎn)單介紹一下J2ME中如何使用Canvas制作簡(jiǎn)單的游戲菜單,我們知道MIDP的圖形用戶界面分為兩類,分別是高級(jí)圖形用戶界面和低級(jí)用戶界面。

你對(duì)J2ME中使用Canvas制作簡(jiǎn)單的游戲菜單是否熟悉,這里和大家分享一下,我們知道MIDP的圖形用戶界面分為兩類,分別是高級(jí)圖形用戶界面和低級(jí)用戶界面。一般來(lái)講高級(jí)圖形用戶界面類使用起來(lái)比較方便,可移植性強(qiáng),但是程序員對(duì)他的控制能力也很低,因?yàn)樗鼈兊慕缑姹憩F(xiàn)是由底層控制的,而不是我們控制的。

J2ME中使用Canvas制作簡(jiǎn)單的游戲菜單

我們知道MIDP的圖形用戶界面分為兩類,分別是高級(jí)圖形用戶界面和低級(jí)用戶界面。一般來(lái)講高級(jí)圖形用戶界面類使用起來(lái)比較方便,可移植性強(qiáng),但是程序員對(duì)他的控制能力也很低,因?yàn)樗鼈兊慕缑姹憩F(xiàn)是由底層控制的,而不是我們控制的。相比高級(jí)UI類,低級(jí)UI類則使用起來(lái)更難一些,但是控制能力更強(qiáng),可以做出自己需要的界面。

Canvas和Graphics是我們必須熟練使用的兩個(gè)類,分別代表了畫布和畫筆(事實(shí)上更豐富,姑且這么比喻)。而我們則是畫畫的人,而指導(dǎo)我們?nèi)绾蜗鹿P的就是Javadoc了,再加上勤奮努力一定可以畫出不錯(cuò)的界面。比如tabbed菜單,二級(jí)菜單等。這里我們講述一個(gè)簡(jiǎn)單菜單的制作方式。

在畫菜單的時(shí)候,需要考慮兩面的問(wèn)題,***是計(jì)算相對(duì)位置,讓菜單能夠盡可能適應(yīng)更多的機(jī)型,盡量少使用絕對(duì)值。例如畫下面的菜單的時(shí)候

我們應(yīng)該計(jì)算菜單的每個(gè)條目的高度,這些可以有Font的高度算出,當(dāng)然你可以給條目留一些padding的距離。還應(yīng)該計(jì)算條目的最寬值,畢竟每個(gè)條目的字?jǐn)?shù)不一樣。這樣基本知道了整個(gè)菜單占的空間。***還需要計(jì)算菜單在屏幕的位置。菜單的繪制如下所示:

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. //計(jì)算整個(gè)菜單的高度,寬度和(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. //畫菜單選項(xiàng),并根據(jù)selected的值判斷焦點(diǎn)  
  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.  

#p#第二個(gè)重要的問(wèn)題是:焦點(diǎn)的切換,在高級(jí)UI類中,這是不需要我們處理的。但是使用Canvas制作菜單需要自己來(lái)處理焦點(diǎn)的移動(dòng),這里我們定義一個(gè)int類型變量selected,來(lái)記錄焦點(diǎn)所在的菜單條目位置,也就是選擇的索引。當(dāng)用戶按鍵的時(shí)候,我們?cè)趉eyPressed()方法中判斷用戶的移動(dòng)方向,對(duì)selected進(jìn)行相關(guān)的加減運(yùn)算,然后repaint()整個(gè)屏幕即可。

Java代碼

  1. publicvoidkeyPressed(intkeyCode){  
  2.  
  3. //根據(jù)用戶輸入更新selected的值,并重新繪制屏幕  
  4.  
  5. intaction=this.getGameAction(keyCode);  
  6.  
  7. switch(action){  
  8.  
  9. caseCanvas.FIRE:  
  10.  
  11. printLabel(selected);  
  12.  
  13. break;  
  14.  
  15. caseCanvas.DOWN:  
  16.  
  17. selected=(selected+1)%4;  
  18.  
  19. break;  
  20.  
  21. caseCanvas.UP:{  
  22.  
  23. if(--selected<0){  
  24.  
  25. selected+=4;  
  26.  
  27. }  
  28.  
  29. break;  
  30.  
  31. }  
  32.  
  33. default:  
  34.  
  35. break;  
  36.  
  37. }  
  38.  
  39. repaint();  
  40.  
  41. serviceRepaints();  
  42.  
  43. }  
  44.  
  45.  
  46.  

這樣我們就制作出了一個(gè)基本的菜單,你還可以發(fā)揮想象給被選中的菜單增加動(dòng)畫效果。MenuCanvas的代碼如下所示:

Java代碼

  1. packagecom.j2medev.chapter3;  
  2.  
  3. importjavax.microedition.lcdui.*;  
  4.  
  5. publicclassMenuCanvasextendsCanvas{  
  6.  
  7. //selected變量標(biāo)記了焦點(diǎn)位置  
  8.  
  9. privateintselected=0;  
  10.  
  11. privateintpreferWidth=-1;  
  12.  
  13. privateintpreferHeight=-1;  
  14.  
  15. publicstaticfinalint[]OPTIONS={0,1,2,3};  
  16.  
  17. publicstaticfinalString[]LABELS={"NewGame",
  18. "Setttings","HighScores","Exit"};  
  19.  
  20. publicMenuCanvas(){  
  21.  
  22. selected=OPTIONS[0];  
  23.  
  24. //計(jì)算菜單選項(xiàng)的長(zhǎng)度和高度值  
  25.  
  26. FontFontf=Font.getDefaultFont();  
  27.  
  28. for(inti=0;i<LABELS.length;i++){  
  29.  
  30. inttemp=f.stringWidth(LABELS[i]);  
  31.  
  32. if(temp>preferWidth){  
  33.  
  34. preferWidth=temp;  
  35.  
  36. }  
  37.  
  38. }  
  39.  
  40. preferWidthpreferWidth=preferWidth+2*8;  
  41.  
  42. preferHeight=f.getHeight()+2*4;  
  43.  
  44. }  
  45.  
  46. publicvoidpaint(Graphicsg){  
  47.  
  48. //清除屏幕  
  49.  
  50. intcolor=g.getColor();  
  51.  
  52. g.setColor(0xFFFFFF);  
  53.  
  54. g.fillRect(0,0,getWidth(),getHeight());  
  55.  
  56. g.setColor(color);  
  57.  
  58. //計(jì)算整個(gè)菜單的高度,寬度和(x,y)  
  59.  
  60. intrectWidth=preferWidth;  
  61.  
  62. intrectHeight=preferHeight*LABELS.length;  
  63.  
  64. intx=(getWidth()-rectWidth)/2;  
  65.  
  66. inty=(getHeight()-rectHeight)/2;  
  67.  
  68. //畫矩形  
  69.  
  70. g.drawRect(x,y,rectWidth,rectHeight);  
  71.  
  72. for(inti=1;i<LABELS.length;i++){  
  73.  
  74. g.drawLine(x,y+preferHeight*i,
  75. x+rectWidth,y+preferHeight*i);  
  76.  
  77. }  
  78.  
  79. //畫菜單選項(xiàng),并根據(jù)selected的值判斷焦點(diǎn)  
  80.  
  81. for(intj=0;j<LABELS.length;j++){  
  82.  
  83. if(selected==j){  
  84.  
  85. g.setColor(0x6699cc);  
  86.  
  87. g.fillRect(x+1,y+j*preferHeight+1,
  88. rectWidth-1,preferHeight-1);  
  89.  
  90. g.setColor(color);  
  91.  
  92. }  
  93.  
  94. g.drawString(LABELS[j],x+8,y+j*preferHeight+4,
  95. Graphics.LEFT|Graphics.TOP);  
  96.  
  97. }  
  98.  
  99. }  
  100.  
  101. publicvoidkeyPressed(intkeyCode){  
  102.  
  103. //根據(jù)用戶輸入更新selected的值,并重新繪制屏幕  
  104.  
  105. intaction=this.getGameAction(keyCode);  
  106.  
  107. switch(action){  
  108.  
  109. caseCanvas.FIRE:  
  110.  
  111. printLabel(selected);  
  112.  
  113. break;  
  114.  
  115. caseCanvas.DOWN:  
  116.  
  117. selected=(selected+1)%4;  
  118.  
  119. break;  
  120.  
  121. caseCanvas.UP:{  
  122.  
  123. if(--selected<0){  
  124.  
  125. selected+=4;  
  126.  
  127. }  
  128.  
  129. break;  
  130.  
  131. }  
  132.  
  133. default:  
  134.  
  135. break;  
  136.  
  137. }  
  138.  
  139. repaint();  
  140.  
  141. serviceRepaints();  
  142.  
  143. }  
  144.  
  145. //showNotify()在paint()之前被調(diào)用  
  146.  
  147. publicvoidshowNotify(){  
  148.  
  149. System.out.println("showNotify()iscalled");  
  150.  
  151. }  
  152.  
  153. privatevoidprintLabel(intselected){  
  154.  
  155. System.out.println(LABELS[selected]);  
  156.  
  157. }  
  158.  
  159. }  

【編輯推薦】

  1. 深入探究Myeclipse J2ME開(kāi)發(fā)環(huán)境配置
  2. 深入了解J2ME Polish+Eclipse配置過(guò)程
  3. NetBeans開(kāi)發(fā)J2ME時(shí)環(huán)境變量配置
  4. Eclipse中進(jìn)行JVM內(nèi)存設(shè)置
  5. 解析Linux下如何用eclipse搭建J2ME開(kāi)發(fā)環(huán)境

 

責(zé)任編輯:佚名 來(lái)源: dev.10086.cn
相關(guān)推薦

2010-09-29 08:57:04

J2ME前景

2010-09-30 13:48:10

J2ME游戲引擎

2010-09-29 13:09:48

OTAJ2ME程序

2009-06-23 11:30:16

RMSJ2ME

2010-09-30 12:53:00

J2MECSS

2011-12-02 10:37:14

JavaJ2ME

2010-09-29 09:19:39

J2ME開(kāi)發(fā)工具

2009-06-11 09:19:38

netbeans實(shí)例J2ME游戲

2010-09-29 15:35:04

Item類J2ME

2010-09-29 15:45:49

J2MEFontColor

2009-06-30 15:49:00

J2ME編程

2009-06-17 11:27:00

setClip方法J2ME

2010-09-30 08:49:17

cookieJ2ME

2010-09-30 09:56:26

J2ME Polish

2010-09-30 13:28:55

J2ME圖形

2009-03-22 09:38:03

Android移植J2ME

2010-09-29 10:58:22

J2MEKVMAPI

2009-06-08 21:34:09

J2EEJ2SEJ2ME

2010-09-29 14:18:36

J2ME SDK

2010-09-29 13:50:31

J2MEJ2SE
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产一区二区三区在线看| 红桃av永久久久| 7777精品久久久大香线蕉小说| 美女毛片在线观看| 免费一区二区| 7777精品伊人久久久大香线蕉的 | 五月天免费网站| 秋霞一区二区三区| 欧美午夜性色大片在线观看| 一区二区三区在线观看www| 丰满肥臀噗嗤啊x99av| 久久综合图片| 久久99久久亚洲国产| 99久久久无码国产精品性| 国产va免费精品观看精品| 欧美日韩美女在线| 男女h黄动漫啪啪无遮挡软件| 天堂v在线观看| 久久精品国产精品青草| 国产69久久精品成人看| 日韩黄色免费观看| 欧美色就是色| 亚洲国产精品推荐| 人妻精品久久久久中文字幕69| 欧美电影网站| 亚洲国产aⅴ天堂久久| 中国人体摄影一区二区三区| 天堂а在线中文在线无限看推荐| 精品午夜久久福利影院| 国产成人精品久久| 日韩久久精品视频| 欧美一区网站| 爱福利视频一区| 性欧美丰满熟妇xxxx性仙踪林| 亚洲精选av| 91精品国产乱码| 91制片厂毛片| 韩国精品主播一区二区在线观看| 欧美日韩激情小视频| 国产精品视频网站在线观看| 免费a在线看| 国产视频在线观看一区二区三区| 国产一区自拍视频| 丰满肥臀噗嗤啊x99av| 国产成都精品91一区二区三| 91精品在线观看视频| 中国一区二区视频| 日本不卡一二三区黄网| 国产盗摄xxxx视频xxx69| 天天天天天天天天操| 精品国产aⅴ| 亚洲视频在线免费观看| 国产在线观看无码免费视频| 麻豆一区一区三区四区| 亚洲黄在线观看| 中国xxxx性xxxx产国| 久草精品视频| 精品夜色国产国偷在线| 日韩精品卡通动漫网站| 天堂av一区二区三区在线播放| 亚洲国产成人精品女人久久久 | 亚洲国产成人私人影院tom | 欧美精品播放| 欧美肥老妇视频| 四虎免费在线视频| 国模 一区 二区 三区| 欧美激情乱人伦| 九九热国产精品视频| 亚洲激情专区| 欧美在线视频观看| 成人黄色三级视频| 精品一区二区三区免费视频| 91九色对白| 姝姝窝人体www聚色窝| 99精品热视频| 欧美高清视频一区| 日韩三级影院| 亚洲在线观看免费| 欧美日韩国产精品激情在线播放| 台湾佬中文娱乐久久久| 欧美三片在线视频观看| 欧美视频亚洲图片| 国产极品模特精品一二| 国产视频精品在线| 久久久免费看片| 午夜日韩在线| 欧美在线视频一区| 91福利免费视频| 成人污视频在线观看| 欧美高清视频一区| 久草资源在线观看| 亚洲午夜精品17c| 久久国产色av免费观看| 青青国产精品| 亚洲精品电影网站| 99热6这里只有精品| 亚洲国内欧美| 国产日韩欧美在线| 亚洲欧美综合一区二区| 中文字幕五月欧美| 日本日本19xxxⅹhd乱影响| 久久久久久久性潮| 日韩精品一区二区在线观看| 亚洲午夜久久久久久久久红桃 | 亚洲国产成人私人影院tom| 超级碰在线观看| 综合在线影院| 亚洲成人在线视频播放| 国产91在线播放九色| 在线 亚洲欧美在线综合一区| 国产精品海角社区在线观看| 亚洲国产精品一| 国产欧美日韩精品一区| www.av毛片| 国产激情精品一区二区三区| 亚洲片av在线| 人人干人人干人人干| 国产在线不卡一区| 日韩一区二区电影在线观看| 草草影院在线| 欧美精品aⅴ在线视频| 黄色aaa视频| 狠色狠色综合久久| 成人午夜一级二级三级| 青青青手机在线视频观看| 一区二区三区日韩| 日韩一级免费片| 国产一区二区欧美| 91国产精品91| 亚洲奶汁xxxx哺乳期| 亚洲美女偷拍久久| 久久久福利影院| 久久大综合网| 国产精品video| 日韩欧美在线番号| 午夜久久福利影院| 国产国语老龄妇女a片| 91精品久久久久久久久久不卡| 国产精品白嫩初高中害羞小美女| 天堂在线观看视频| 亚洲第一福利一区| 扒开伸进免费视频| 悠悠资源网久久精品| 国产成人成网站在线播放青青| 在线免费观看a视频| 日韩一级成人av| 1024手机在线视频| 国产98色在线|日韩| www.99riav| 亚洲精品国产九九九| 欧美巨猛xxxx猛交黑人97人| 国产又粗又猛又黄又爽| 亚洲视频网在线直播| 日韩精品视频网址| 欧美jizzhd精品欧美巨大免费| 91香蕉亚洲精品| a黄色片在线观看| 日韩精品一区二| 国产真人真事毛片| 99免费精品视频| 国产成人无码一二三区视频| 亚洲8888| 国产精品视频免费在线观看| 欧美精品hd| 欧美一级国产精品| 国产一级特黄毛片| 久久综合视频网| 国产日韩成人内射视频| 日韩成人精品一区| 亚洲已满18点击进入在线看片| 污污的视频在线观看| 亚洲国产中文字幕在线观看| 五月天婷婷导航| 中文字幕精品一区二区精品绿巨人 | 少妇精品久久久久久久久久| 国产精品蜜月aⅴ在线| 久久久999精品免费| 国产91免费在线观看| 欧美性黄网官网| 特级西西人体高清大胆| 国产精品一二三四| 奇米精品一区二区三区| 欧美日韩在线二区| 91色视频在线观看| 人人草在线视频| 在线看日韩欧美| www精品国产| 日韩欧美亚洲成人| 朝桐光av在线| wwwwww.欧美系列| 在线不卡一区二区三区| 在线国产日韩| 亚洲视频欧美在线| 高潮按摩久久久久久av免费| 国产成人自拍视频在线观看| 三级网站视频在在线播放| 亚洲欧美国产制服动漫| 国产免费黄色网址| 色老汉一区二区三区| 黄色一级视频免费观看| 国产蜜臀97一区二区三区| 日韩高清一二三区| 美女国产一区二区| 免费毛片小视频| 欧美日韩三级电影在线| 日韩欧美视频一区二区三区四区| 911亚洲精品| 成人免费淫片视频软件| 不卡福利视频| 欧美极品在线播放| 伦xxxx在线| 亚洲日本中文字幕| 日本免费网站在线观看| 欧美一区二区三区在线观看视频| 国产性生活视频| 亚洲成人在线网站| 国产午夜手机精彩视频| 久久精品一区二区三区av| 亚洲午夜久久久久久久久| 国内精品视频666| 熟女人妇 成熟妇女系列视频| 狠狠干成人综合网| 51xx午夜影福利| 成人免费在线观看av| 美女黄毛**国产精品啪啪| 91精品尤物| 亚洲最大福利视频| 亚洲精品自拍| 国产一区二区在线播放| 欧美日韩女优| 国产精品久久久999| jizz内谢中国亚洲jizz| 97在线看福利| 国产极品在线观看| 97视频色精品| 理论片午夜视频在线观看| 色综合久久88色综合天天看泰| 九色porny丨首页在线| 色黄久久久久久| av男人的天堂在线| 亚洲视频精品在线| 久久久资源网| 在线看片第一页欧美| 1769在线观看| 日韩在线www| 免费av不卡| 久久av红桃一区二区小说| 搞黄网站在线观看| 欧美成年人网站| 日韩三级免费| 性色av一区二区三区| 涩涩视频网站在线观看| 欧美一级片在线播放| 香蕉视频亚洲一级| 国产精品电影观看| 日韩在线激情| 91pron在线| 久久夜色精品国产噜噜av小说| 国产女主播一区二区| 日韩电影不卡一区| 欧美色综合天天久久综合精品| 亚洲色欲久久久综合网东京热| 久久久久久久久久久久久久| 午夜啪啪免费视频| 欧美va天堂在线| 日韩av高清在线看片| 国产精品久久久久久久免费软件 | 精品不卡在线| 五月国产精品| 亚洲精品一区二区毛豆| 51精产品一区一区三区| 91网站在线观看免费| 亚洲看片一区| 亚洲视频在线观看一区二区三区| 久久精品99久久久| 日本人妻一区二区三区| xnxx国产精品| 羞羞在线观看视频| 亚洲风情在线资源站| 老熟妇一区二区三区| 欧美二区乱c少妇| 蜜桃av中文字幕| 国产一区二区三区丝袜| 永久免费网站在线| 欧美有码在线观看| 亚洲香蕉久久| 久久精品国产美女| 国产精品99视频| 波多野结衣之无限发射| 奇米影视一区二区三区小说| 国产精品一级无码| 久久精子c满五个校花| 一级黄色录像视频| 色哟哟精品一区| 亚洲精品无码专区| 自拍偷拍亚洲欧美| 国产在线观看www| 国产一区二区丝袜| 亚洲精品国产setv| 成人国产在线看| 日韩经典中文字幕一区| 91精品又粗又猛又爽| 国产人久久人人人人爽| 久草福利资源在线观看| 欧美色手机在线观看| 先锋av资源站| 欧美人与性动交a欧美精品| 深夜成人福利| 国产日韩欧美一区二区| 天天影视天天精品| 啊啊啊国产视频| 99久久综合国产精品| 黄色一级视频免费观看| 欧美日韩精品一区二区三区| 亚洲 精品 综合 精品 自拍| 欧美成人精品一区| 日韩高清在线| 老牛影视免费一区二区| 欧美久色视频| 一级做a爱视频| 国产精品久久夜| 久久久久久久亚洲| 亚洲精品不卡在线| 91桃色在线| aaa级精品久久久国产片| 国产韩国精品一区二区三区| 日韩精品无码一区二区三区免费| 99久久99久久精品免费观看| 欧美人妻一区二区| 日韩一区二区三区精品视频| 日本在线人成| 国产精选久久久久久| 精品久久久亚洲| 超碰影院在线观看| 99久久99久久精品免费观看| 国产亚洲小视频| 日韩欧美的一区| 免费不卡av| 国产不卡一区二区三区在线观看| 欧美激情91| wwwxxx色| 亚洲不卡一区二区三区| 成人久久久精品国产乱码一区二区 | 国产一区二区高清视频| 伊人久久综合| 国产高潮失禁喷水爽到抽搐| 亚洲午夜免费电影| 男人的天堂a在线| 高清欧美电影在线| 欧美理论电影在线精品| 97av视频在线观看| 国产女主播视频一区二区| 国产又粗又猛又爽又| 正在播放欧美视频| 91国产一区| 老司机激情视频| 99精品视频在线免费观看| 国产精品视频久久久久久久| 亚洲精品www久久久久久广东| 中文av在线全新| 视频一区三区| 久久91精品国产91久久小草| 欧美一级片在线视频| 日韩免费高清视频| 蜜桃麻豆影像在线观看| 欧美一区二区在线视频观看| 欧美a一区二区| 国产suv一区二区三区| 日韩精品中午字幕| 在线免费av资源| 亚洲 国产 欧美一区| 国产自产高清不卡| 欧美亚洲天堂网| 亚洲一二三在线| 欧美大片91| 日韩av资源在线| 国产精品的网站| 亚洲国产日韩在线观看| 98精品国产自产在线观看| 国产影视一区| 在线观看你懂的视频| 色综合一区二区三区| 黄色成人在线| 激情视频在线观看一区二区三区| 日韩精品一二三区| 欧美成人精品欧美一级私黄| 日韩精品高清在线| 四虎精品在线观看| 福利视频一二区| 国产精品网站在线观看| 亚洲爱情岛论坛永久| 国产成人精品视频在线| 欧美福利影院| 制服 丝袜 综合 日韩 欧美| 日韩一区二区三区视频在线| 最新欧美色图| 亚洲乱码日产精品bd在线观看| 国产亚洲制服色| 亚洲成a人片在线| 国产精品爽爽爽|