m3gcanvas.java

来自「3D手机游戏开发实例源代码」· Java 代码 · 共 97 行

JAVA
97
字号


import javax.microedition.lcdui.*;
import javax.microedition.m3g.*;
import javax.microedition.lcdui.game.*;

public class M3GCanvas extends Canvas implements Runnable
{
  private Command exitCmd; 

  private Graphics3D g3d;
  //private Graphics g2d = getGraphics();
  private World world;

  // world elements
  private MobileCamera mobCam;
  private Group cameraGroup;


  public M3GCanvas() 
  { 

    setFullScreenMode(false);


    g3d = Graphics3D.getInstance();
    world = new World();   // create world graph
    mobCam = new MobileCamera( getWidth(), getHeight());

    world.addChild( mobCam.getCameraGroup() );
    world.setActiveCamera( mobCam.getCamera() ); 
    Light light = new Light();  // default white, directional light
    light.setIntensity(1.25f);  // make it a bit brighter
    light.setOrientation(-45.0f, 1.0f, 0, 0); // pointing down and into world
                  // -45
    world.addChild(light);
    Background backGnd = new Background();
    backGnd.setColor(0x00bffe); // a light blue background
    world.setBackground(backGnd);
 	  Object3D[] parts = null;
    try {
      parts = Loader.load("/pond_vilkutus.m3g");
    } 
    catch (Exception e) 
    {  e.printStackTrace();  }
 	  Group root = (Group) parts[0];
    Group mGroup = (Group) root.find(296699498);   // use Group with user ID id
    Group parent = (Group)mGroup.getParent();
    parent.removeChild(mGroup);  

    Group posGroup = new Group();
    posGroup.setOrientation(-90.0f, 1.0f, 0, 0);  // rotate -90 around x-axis
    posGroup.addChild(mGroup);
    world.addChild(posGroup);
    Thread t = new Thread(this);
    t.start();
  }  // end of LoaderCanvas()

  protected void keyPressed(int keyCode)
  { int gameAction = getGameAction(keyCode);
    mobCam.pressedKey(gameAction);

  }

  protected void keyReleased(int keyCode)
  { int gameAction = getGameAction(keyCode);
    mobCam.releasedKey(gameAction);
  }
  protected void paint(Graphics g2d)
  {
  	   try{    

            g3d.bindTarget(g2d); // Binds the given Graphics or mutable Image2D as the rendering target of this Graphics3D
            g3d.render(world);
  
        }finally{
            g3d.releaseTarget();
        }
  	
  }


    public void run() {

        while(true){
        mobCam.update();
        repaint();
           // flushGraphics();
        }
    }





} 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?