java j2me 使用M3G封装
2009-10-22 13:20
267 查看
import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.game.GameCanvas; import javax.microedition.m3g.Camera; import javax.microedition.m3g.Graphics3D; import javax.microedition.m3g.Loader; import javax.microedition.m3g.World; import javax.microedition.midlet.MIDlet; public class RMMIDlet extends MIDlet implements CommandListener { private Display myDisplay = null; private RetainedCanvas myCanvas = null; private Command exitCommand = new Command("Exit", Command.ITEM, 1); public RMMIDlet() { super(); myDisplay = Display.getDisplay(this); myCanvas = new RetainedCanvas(); myCanvas.setCommandListener(this); myCanvas.addCommand(exitCommand); } public void startApp() { myCanvas.init(); myDisplay.setCurrent(myCanvas); myCanvas.start(); } public void pauseApp() { } public void destroyApp(boolean unconditional) { myCanvas.stop(); } public void commandAction(Command cmd, Displayable disp) { if (cmd == exitCommand) { try { destroyApp(false); notifyDestroyed(); } catch (Exception e) { e.printStackTrace(); } } } } class RetainedCanvas extends GameCanvas implements Runnable { private boolean mRunning = false; private Thread mPaintThrd = null; private Graphics3D mGraphics3D = Graphics3D.getInstance(); private World mWorld = null; private Camera mCam = null; private long mWorldStartTime = 0; public RetainedCanvas() { super(true); } public void init() { try { mWorld = (World) Loader.load("/p.m3g")[0]; mCam = mWorld.getActiveCamera(); mCam.translate(0, 0, -1.5f); mCam.setOrientation(180, 0, 1, 0); } catch (Exception e) { e.printStackTrace(); } mWorldStartTime = System.currentTimeMillis(); } public void start() { mRunning = true; mPaintThrd = new Thread(this); mPaintThrd.start(); } public void stop() { mRunning = false; try { mPaintThrd.join(); } catch (InterruptedException ex) { } } public void run() { Graphics g = getGraphics(); long startTime; while (mRunning) { cameraForward(); startTime = System.currentTimeMillis() - mWorldStartTime; mWorld.animate((int) startTime); mGraphics3D.bindTarget(g); mGraphics3D.render(mWorld); mGraphics3D.releaseTarget(); flushGraphics(); try { Thread.sleep(100); } catch (InterruptedException ie) { } } } private void cameraForward() { mCam.translate(0f, 0f, 0.2f); } } |
相关文章推荐
- 【慕课笔记】U2 封装 第2节 使用包管理JAVA中的类
- elasticsearch java api使用,es java封装
- Java中如何封装自己的类,建立并使用自己的类库?
- Java中封装配置文件(1)-使用Properties
- Java中如何使封装自己的类,建立并使用自己的类库
- 由mybatis的逆向工程看如果使用封装代码(深入理解java面向对象的思维逻辑)
- java-day15api的概述: 就是java替我们写好的一些类,他封装了一些功能,我们仅仅只需要知道如何使用即可
- 使用JAVA将任意封装对象转换成JSON、XML文件与对象之间的相互转化
- JAVA中封装JSONUtils工具类及使用
- java 使用java执行命令简易封装类(未测试)
- JAVA使用JDBC连接数据库做JSON封装和解析的例子
- java十三周封装一个求一元二次方程根的类SquareEquation,要求考虑解方程的异常,再编写一个窗口类EquationFrame。要求窗口使用三个文本框和一个文本区,其中三个文本框用来显示生更
- JAVA中封装JSONUtils工具类及使用
- 使用Wrapper将Java Application程序封装为Windows下面的服务
- JAVA--第十三周任务一封装一个求一元二次方程根的类SquareEquation,要求考虑解方程的异常,再编写一个窗口类EquationFrame。要求窗口使用三个文本框和一个文本区,其中三个文本框
- java封装的理解及使用及 No enclosing instance of type j is accessible. Must qualify the allocation with an
- 使用Java查询MongoDB数据库并封装成查询服务实践
- 【菜鸟学Java】14:使用ThreadLocal对Connection进行封装
- 在JAVA中封装JSONUtils工具类及使用 (转)
- 使用poi Java封装对Excel内容的读取,支持合并列形式