自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

剖析J2ME 3D編程的第一個3D程序

開發(fā) 前端
你對J2ME 3D編程是否了解,這里和大家分享一下J2ME 3D編程的第一個3D程序,最常用的3D API有OpenGL和Microsoft的Direct3D,在桌面游戲中早已廣泛應(yīng)用。

本文和大家重點討論一下J2ME 3D編程——***個3D程序,參考WTK2.2提供的demo,完成了***個3D程序,雖然很簡單,而且有些問題還不是很清楚,還是把代碼共享出來和愿意學(xué)習(xí)J2ME 3D編程的朋友一起學(xué)習(xí)。

J2ME 3D編程——***個3D程序

參考WTK2.2提供的demo,完成了***個3D程序,雖然很簡單,而且有些問題還不是很清楚,還是把代碼共享出來和愿意學(xué)習(xí)J2ME 3D編程的朋友一起學(xué)習(xí)。

關(guān)于代碼的編譯和運行說明如下:

1、以下代碼在J2MEWTK2.2下面編譯通過。

2、代碼分為兩個文件:First3DCanvas.java和First3DMIDlet.java。

3、使用J2MEWTK2.2建立新的工程,主MIDlet類為:first3d.First3DMIDlet

4、將代碼保存在你的工程目錄下的first3d目錄下。

5、將J2MEWTK安裝目錄下的

apps\Demo3D\res\com\superscape\m3g\wtksamples\retainedmode\content目錄中的swerve.m3g文件復(fù)制到你的工程目錄下的res目錄下。

6、你的工程建立后,設(shè)置工程,通過WTK界面中的“設(shè)置”按鈕打開設(shè)置窗口,在“API選擇”中,設(shè)置“目標(biāo)平臺”為:自定義;“簡檔”為“MIDP2.0”;“配置”為“CLDC1.1”;選中“Mobile3DGraphicsforJ2ME(JSR184)”。

7、這樣你就可以編譯和運行以下代碼了。#p#

J2ME 3D編程的***個3D程序源代碼如下: 

  1. //First3DMIDlet.java  
  2.  
  3. packagefirst3d;  
  4.  
  5. importjavax.microedition.midlet.*;  
  6.  
  7. importjavax.microedition.lcdui.*;  
  8.  
  9. publicclassFirst3DMIDletextendsMIDlet{  
  10.  
  11. privateFirst3DCanvasdisplayable=newFirst3DCanvas();  
  12.  
  13.  
  14. publicvoidstartApp(){  
  15.  
  16. Display.getDisplay(this).setCurrent(displayable);  
  17.  
  18. }  
  19.  
  20. publicvoidpauseApp(){}  
  21.  
  22. publicvoiddestroyApp(booleanunconditional){}  
  23.  
  24. }  
  25.  
  26. //First3Dcanvas.java  
  27.  
  28. packagefirst3d;  
  29.  
  30. importjavax.microedition.lcdui.*;  
  31.  
  32. importjavax.microedition.m3g.*;  
  33.  
  34. importjava.util.*;  
  35.  
  36. /**  
  37.  
  38. ****個3D程序  
  39.  
  40. */  
  41.  
  42. publicclassFirst3DCanvas  
  43.  
  44. extendsCanvas  
  45.  
  46. implementsRunnable{  
  47.  
  48. /**World對象*/  
  49.  
  50. privateWorldmyWorld=null;  
  51.  
  52. /**Graphics3D對象*/  
  53.  
  54. privateGraphics3Dg3d=Graphics3D.getInstance();  
  55.  
  56. /**Camera對象*/  
  57.  
  58. privateCameracam=null;  
  59.  
  60. privateintviewport_x;  
  61.  
  62. privateintviewport_y;  
  63.  
  64. privateintviewport_width;  
  65.  
  66. privateintviewport_height;  
  67.  
  68. privatelongworldStartTime=0;  
  69.  
  70. //重繪時間  
  71.  
  72. privateintvalidity=0;  
  73.  
  74. publicFirst3DCanvas(){  
  75.  
  76. //啟動重繪界面的線程  
  77.  
  78. Threadthread=newThread(this);  
  79.  
  80. thread.start();  
  81.  
  82. try{  
  83.  
  84. //導(dǎo)入3D圖片  
  85.  
  86. myWorld=(World)Loader.load("/swerve.m3g")[0];  
  87.  
  88. viewport_x=0;  
  89.  
  90. viewport_y=0;  
  91.  
  92. viewport_width=getWidth();  
  93.  
  94. viewport_height=getHeight();  
  95.  
  96. cam=myWorld.getActiveCamera();  
  97.  
  98. //設(shè)置cam對象  
  99.  
  100. float[]params=newfloat[4];  
  101.  
  102. inttype=cam.getProjection(params);  
  103.  
  104. if(type!=Camera.GENERIC){  
  105.  
  106. //calculatewindowaspectratio  
  107.  
  108. floatwaspect=viewport_width/viewport_height;  
  109.  
  110. if(waspect<params[1]){  
  111.  
  112. floatheight=viewport_width/params[1];  
  113.  
  114. viewport_height=(int)height;  
  115.  
  116. viewport_y=(getHeight()-viewport_height)/2;  
  117.  
  118. }  
  119.  
  120. else{  
  121.  
  122. floatwidth=viewport_height*params[1];  
  123.  
  124. viewport_width=(int)width;  
  125.  
  126. viewport_x=(getWidth()-viewport_width)/2;  
  127.  
  128. }  
  129.  
  130. }  
  131.  
  132. worldStartTime=System.currentTimeMillis();  
  133.  
  134. }  
  135.  
  136. catch(Exceptione){}  
  137.  
  138. }  
  139.  
  140. protectedvoidpaint(Graphicsg){  
  141.  
  142. //清除背景  
  143.  
  144. g.setColor(0x00);  
  145.  
  146. g.fillRect(0,0,getWidth(),getHeight());  
  147.  
  148. //和3D對象綁定  
  149.  
  150. g3d.bindTarget(g);  
  151.  
  152. g3d.setViewport(viewport_x,viewport_y,
  153. viewport_width,viewport_height);  
  154.  
  155. longstartTime=System.currentTimeMillis()-worldStartTime;  
  156.  
  157. validity=myWorld.animate((int)startTime);  
  158.  
  159. try{  
  160.  
  161. g3d.render(myWorld);  
  162.  
  163. }  
  164.  
  165. finally{  
  166.  
  167. g3d.releaseTarget();  
  168.  
  169. }  
  170. }  
  171.  
  172. publicvoidrun(){  
  173.  
  174. try{  
  175.  
  176. while(true){  
  177.  
  178. //重繪圖形  
  179.  
  180. repaint(viewport_x,viewport_y,
  181. viewport_width,viewport_height);  
  182. }  
  183.  
  184. }catch(Exceptione){}  
  185. }  
  186. }  

【編輯推薦】

  1. 術(shù)語匯編 J2ME 3D技術(shù)簡介
  2. 深入了解J2ME Polish+Eclipse配置過程
  3. 探究J2ME中cookie庫的管理
  4. Eclipse中進(jìn)行JVM內(nèi)存設(shè)置
  5. 解析Linux下如何用eclipse搭建J2ME開發(fā)環(huán)境

 

責(zé)任編輯:佚名 來源: blog.csdn.net
相關(guān)推薦

2010-10-09 15:52:28

J2ME3D技術(shù)

2010-09-30 10:25:40

J2ME3D

2025-03-27 09:26:30

2022-09-14 09:23:51

Java3D引擎

2011-09-22 10:07:52

奧圖碼投影儀

2011-10-06 13:30:45

宏碁投影儀

2020-08-26 10:37:21

阿里3D

2011-05-03 11:07:46

2D3D麗訊

2012-11-26 12:51:44

木材3D打

2023-05-03 09:01:41

CanvasWebGL

2024-05-16 09:24:17

3D技術(shù)

2011-05-26 10:05:07

優(yōu)派投影機(jī)

2011-08-26 14:50:23

2011-04-26 14:21:20

3DJVC投影機(jī)

2023-03-03 21:42:18

鴻蒙

2012-08-13 17:11:37

Silverlight

2012-06-16 16:57:52

WebGL

2011-05-26 10:55:39

2024-07-16 12:02:11

2011-05-25 16:07:17

點贊
收藏

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