为J2ME开发移动3D游戏之保留模式 - 编程入门网
作者 佚名技术
来源 NET编程
浏览
发布时间 2012-06-21
t height = viewport_width/params[1];
viewport_height=(int)height;
viewport_y=(myCanvas.getHeight()-viewport_height)/2;
}
else{
float width = viewport_height*params[1];
viewport_width=(int)width;
viewport_x=(myCanvas.getWidth()-viewport_width)/2;
}
}
}
public void getObjects(){
try{
tRoo = (Group) myWorld.find(POGOROO);
tCams = (Group) myWorld.find(CAMERA);
acRoo = (Group) myWorld.find(TRANSFORM);
animRoo = (AnimationController) myWorld.find(ROO);
//取得动画的长度
AnimationTrack track = acRoo.getAnimationTrack(0);
animLength = 1000; // 缺省的长度,1秒
if (track != null){
KeyframeSequence ks = track.getKeyframeSequence();
if (ks != null)
animLength = ks.getDuration();
}
}
catch(Exception e){
e.printStackTrace();
}
}
public void pauseApp(){}
public void destroyApp(boolean unconditional) throws
MIDletStateChangeException{
myRefreshTimer.cancel();
myRefreshTimer = null;
myRefreshTask = null;
}
public void paint(Graphics g){
if(g.getClipWidth() != viewport_width ||
g.getClipHeight() != viewport_height ||
g.getClipX() != viewport_x ||
g.getClipY() != viewport_y){
g.setColor(0x00);
g.fillRect(0, 0, myCanvas.getWidth(), myCanvas.getHeight());
}
if ((myGraphics3D != null) && (myWorld != null)){
myGraphics3D.bindTarget(g);
myGraphics3D.setViewport(viewport_x, viewport_y, viewport_width, viewport_height);
myGraphics3D.render(myWorld);
myGraphics3D.releaseTarget();
}
}
public void commandAction(Command cmd, Displayable disp)
{
if (cmd == exitCommand){
try{
destroyApp(false);
notifyDestroyed();
}
catch(Exception e){
e.printStackTrace();
}
}
}
private class RefreshTask extends TimerTask{
public void run(){
if(myCanvas !=null && myGraphics3D != null && myWorld != null{
int startTime = (int)System.currentTimeMillis();
int validity = myWorld.animate(startTime);
myCanvas.repaint(viewport_x, viewport_y,
viewport_width, viewport_height);
}
}
}
class ExampleCanvas extends Canvas{
Example3D myRooMIDlet;
int i = 0;
ExampleCanvas(Example3D Testlet) { myRooMIDlet = Testlet; }
void init() { }
void destroy() { }
protected void paint(Graphics g) { myRooMIDlet.paint(g); }
protected void keyPressed(int i) { }
protected void keyReleased(int i) { }
protected void keyRepeated(int i) { }
protected void pointerDragged(int x, int y) { }
protected void pointerPressed(int x, int y) { }
protected void pointerReleased(int x, int y) { }
}
}
为J2ME开发移动3D游戏之保留模式(3)时间:2011-01-07九、运行在模拟器中的例程 图1展示了例程在WTK模拟器中运行的结果。图中的袋鼠和田地看上去棒极了。如果设计者选择对其中任何对象改变一下的话,可以用the3D工具来完成,而在例程MIDlet中不需要作任何变化。 图1 例程在模拟器中运行的结果 十、结论 现在,你又看到一种使用JSR 184(也称移动3D API)的更高级的方式来创建3D应用程序。在保留模式下,设计者可以使用现有的3D建模工具来创建3D世界和其中的对象,然后把这些模型输出到M3G文件中。之后,应用程序只需装入该模型并在屏幕上绘制3D世界的视图即可。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于为J2ME开发移动3D游戏之保留模式 - 编程入门网的所有评论