J2ME中調用Canvas製作遊戲菜單(1)

來源:互聯網
上載者:User

你對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.  


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.