m3gcanvas.java
来自「3D手机游戏开发实例源代码」· Java 代码 · 共 88 行
JAVA
88 行
import javax.microedition.lcdui.*;import javax.microedition.lcdui.game.*;import javax.microedition.m3g.*;import java.io.*;public class M3GCanvas extends GameCanvas implements Runnable { private Graphics3D g3d ; private World world; private int iStartTime; private static final String FILE_NAME = "/cartrack.m3g"; public M3GCanvas(){ super(true); try { world = (World)Loader.load(FILE_NAME)[0]; } catch (IOException e) { System.out.println("Load failed (" + e.getMessage() + ")"); e.printStackTrace(); } // traverse(world); iStartTime = (int)System.currentTimeMillis(); Thread t = new Thread(this); t.start(); } public void run() { Graphics g = getGraphics(); while(true) { g3d = Graphics3D.getInstance(); g3d.bindTarget(g); try{ g3d.clear(null); world.animate((int) System.currentTimeMillis() - iStartTime); world.align(null); g3d.render(world); }catch(Exception e){ System.err.println(e); }finally{ g3d.releaseTarget(); } flushGraphics(); try { Thread.sleep(200); } catch (InterruptedException e) { } } } private void traverse(Node aNode) { if (aNode instanceof Mesh) { Mesh mesh = (Mesh)aNode; for (int i = 0; i < mesh.getSubmeshCount(); i++) { Appearance app = mesh.getAppearance(i); CompositingMode cm = new CompositingMode(); cm.setBlending(CompositingMode.ALPHA_ADD); app.setCompositingMode(cm); app.setTexture(0, null); Material mat = new Material(); mat.setColor(Material.AMBIENT | Material.DIFFUSE | Material.SPECULAR, 0xff000000); mat.setColor(Material.EMISSIVE, 0xff444444); app.setMaterial(mat); } } if (aNode instanceof Group) { Group group = (Group)aNode; for (int i = 0; i < group.getChildCount(); i++) { traverse(group.getChild(i)); } } } }
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?