|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
市场分额,java比asp高一点,因为C#是仿照java开发的,所以哦C#能做的java都能做到,但是java能做的,C#不一定都能做到。毕竟是抄袭吗。编程|程序J2ME3D编程――第一个3D程序(附源代码)
更多文章请会见:http://blog.csdn.net/mailbomb
参考WTK2.2供应的demo,完成了第一个3D程序,固然很复杂,并且有些成绩还不是很分明,仍是把代码共享出来和乐意进修J2ME3D编程的伴侣一同进修。
关于3D编程的材料,能够查阅我的blog。
关于代码的编译和运转申明以下:
1、以下代码在J2MEWTK2.2上面编译经由过程。
2、代码分为两个文件:First3DCanvas.java和First3DMIDlet.java。
3、利用J2MEWTK2.2创建新的工程,主MIDlet类为:first3d.First3DMIDlet
4、将代码保留在你的工程目次下的first3d目次下。
5、将J2MEWTK安装目次下的
appsDemo3Descomsuperscapem3gwtksamplesetainedmodecontent目次中的swerve.m3g文件复制到你的工程目次下的res目次下。
6、你的工程创建后,设置工程,经由过程WTK界面中的“设置”按钮翻开设置窗口,在“API选择”中,设置“方针平台”为:自界说;“简档”为“MIDP2.0”;“设置”为“CLDC1.1”;选中“Mobile3DGraphicsforJ2ME(JSR184)”。
7、如许你就能够编译和运转以下代码了。
源代码以下:
//First3DMIDlet.java
packagefirst3d;
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
publicclassFirst3DMIDletextendsMIDlet{
privateFirst3DCanvasdisplayable=newFirst3DCanvas();
publicvoidstartApp(){
Display.getDisplay(this).setCurrent(displayable);
}
publicvoidpauseApp(){}
publicvoiddestroyApp(booleanunconditional){}
}
//First3Dcanvas.java
packagefirst3d;
importjavax.microedition.lcdui.*;
importjavax.microedition.m3g.*;
importjava.util.*;
/**
*第一个3D程序
*/
publicclassFirst3DCanvas
extendsCanvas
implementsRunnable{
/**World对象*/
privateWorldmyWorld=null;
/**Graphics3D对象*/
privateGraphics3Dg3d=Graphics3D.getInstance();
/**Camera对象*/
privateCameracam=null;
privateintviewport_x;
privateintviewport_y;
privateintviewport_width;
privateintviewport_height;
privatelongworldStartTime=0;
//重绘工夫
privateintvalidity=0;
publicFirst3DCanvas(){
//启动重绘界面的线程
Threadthread=newThread(this);
thread.start();
try{
//导进3D图片
myWorld=(World)Loader.load("/swerve.m3g")[0];
viewport_x=0;
viewport_y=0;
viewport_width=getWidth();
viewport_height=getHeight();
cam=myWorld.getActiveCamera();
//设置cam对象
float[]params=newfloat[4];
inttype=cam.getProjection(params);
if(type!=Camera.GENERIC){
//calculatewindowaspectratio
floatwaspect=viewport_width/viewport_height;
if(waspect<params[1]){
floatheight=viewport_width/params[1];
viewport_height=(int)height;
viewport_y=(getHeight()-viewport_height)/2;
}
else{
floatwidth=viewport_height*params[1];
viewport_width=(int)width;
viewport_x=(getWidth()-viewport_width)/2;
}
}
worldStartTime=System.currentTimeMillis();
}
catch(Exceptione){}
}
protectedvoidpaint(Graphicsg){
//扫除背景
g.setColor(0x00);
g.fillRect(0,0,getWidth(),getHeight());
//和3D对象绑定
g3d.bindTarget(g);
g3d.setViewport(viewport_x,viewport_y,viewport_width,viewport_height);
longstartTime=System.currentTimeMillis()-worldStartTime;
validity=myWorld.animate((int)startTime);
try{
g3d.render(myWorld);
}
finally{
g3d.releaseTarget();
}
}
publicvoidrun(){
try{
while(true){
//重画图形
repaint(viewport_x,viewport_y,viewport_width,viewport_height);
}
}catch(Exceptione){}
}
}
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包...... |
|