JAVA编程:J2ME 3D编程――第一个3D程序
市场分额,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");
viewport_x=0;
viewport_y=0;
viewport_width=getWidth();
viewport_height=getHeight();
cam=myWorld.getActiveCamera();
//设置cam对象
float[]params=newfloat;
inttype=cam.getProjection(params);
if(type!=Camera.GENERIC){
//calculatewindowaspectratio
floatwaspect=viewport_width/viewport_height;
if(waspect<params){
floatheight=viewport_width/params;
viewport_height=(int)height;
viewport_y=(getHeight()-viewport_height)/2;
}
else{
floatwidth=viewport_height*params;
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){}
}
}
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包...... 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 是一种为 Internet发展的计算机语言 是一种使用者不需花费很多时间学习的语言 任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言 如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种突破用户端机器环境和CPU 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
页:
[1]