亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pogoroomidlet.java

?? 手機 3D游戲 供 程序員參考
?? JAVA
字號:
/******************************************************************************//** *	@file	PogoRooMIDlet.java *	@brief	A simple example of a game using M3G * *	Copyright (C) 2004 Superscape plc * *	This file is intended for use as a code example, and *	may be used, modified, or distributed in source or *	object code form, without restriction, as long as *	this copyright notice is preserved. * *	The code and information is provided "as-is" without *	warranty of any kind, either expressed or implied. *//******************************************************************************/package com.superscape.m3g.wtksamples.pogoroo;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;import javax.microedition.lcdui.Graphics;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Command;import javax.microedition.lcdui.Canvas;import javax.microedition.lcdui.Font;import javax.microedition.lcdui.CommandListener;import java.lang.IllegalArgumentException;import java.io.IOException;import java.io.InputStream;import java.io.ByteArrayOutputStream;import javax.microedition.lcdui.Image;import java.util.Timer;import java.util.TimerTask;import javax.microedition.m3g.*;public class PogoRooMIDlet extends MIDlet implements CommandListener{ 	// UserIDs for objects we use in the scene.	static final int POGOROO_MOVE_GROUP_TRANSFORM_ID= 554921620;	static final int CAMERA_GROUP_TRANSFORM_ID 		= 769302310;	static final int POGOROO_TRANSFORM_ID			= 347178853;	static final int ROO_BOUNCE_ID 					= 418071423;	// Key event type IDs	public static final int KEY_REPEATED = 0;	public static final int KEY_PRESSED = 1;	public static final int KEY_RELEASED = 2;	// Key IDs	static final int keyNone = 0;	static final int keyForward = 1;	static final int keyBackward = 2;	static final int keyLeft = 3;	static final int keyRight = 4;	static final int MaxHops = 10;	static final float GroundEdge = 9.0f;	private Display myDisplay = null;	private PogoRooCanvas myCanvas = null;	private Timer myRefreshTimer = new Timer();	private TimerTask myRefreshTask = null;	private Command exitCommand = new Command("Exit", Command.ITEM, 1);	Graphics3D myGraphics3D = Graphics3D.getInstance();	World myWorld = null;	// Control objects for game play	// control for 'roo - group transform and cameras	private AnimationController animRoo = null;	private Group tRoo = null;	private Group tCams = null;	private Group acRoo = null;	private float dirRoo = 0.0f;	private float dirCam = 0.0f;	private int keyMoveRoo = keyNone;	private int keyTurnRoo = keyNone;	private int hopCount = 0;	private int animTime = 0;	private int animLength = 0;	private int animLastTime = 0;	private boolean okToHop = false;	private float[] posRoo = new float[3];	private float[] posRooLast = new float[3];	private float[] posTemp = new float[3];	private int edgeCount = 0;	private float turnAngle;	// lookup table for roo hops	private float[] hopSteps = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.05f, 0.1f, 0.2f, 0.1f, 0.05f, 0.0f};	int viewport_x;	int viewport_y;	int viewport_width;	int viewport_height;	/**	 * PogoRooMIDlet - default constructor.	 */	public PogoRooMIDlet()	{		super();		// Set up the user interface.		myDisplay = Display.getDisplay(this);		myCanvas = new PogoRooCanvas(this);		myCanvas.setCommandListener(this);		myCanvas.addCommand(exitCommand);	}		/**	 * startApp()	 */	public void startApp() throws MIDletStateChangeException	{		myDisplay.setCurrent(myCanvas);		try		{			// load the world from the M3D file			myWorld = (World)Loader.load("/com/superscape/m3g/wtksamples/pogoroo/content/pogoroo.m3g")[0];						getObjects();			setupAspectRatio();		}		catch(Exception e)		{			e.printStackTrace();		}		myRefreshTask = new RefreshTask();				// scehdule a repeating timer to give us a framerate of 20fps.		myRefreshTimer.schedule(myRefreshTask, 0, 50);	}		/**	 * Make sure that the content is rendered with the correct aspect ratio.	 */	void setupAspectRatio()	{		viewport_x = 0;		viewport_y = 0;		viewport_width = myCanvas.getWidth();		viewport_height = myCanvas.getHeight();				Camera cam = myWorld.getActiveCamera();				float[] params = new float[4];		int type = cam.getProjection(params);		if(type != Camera.GENERIC)		{			//calculate window aspect ratio			float waspect=viewport_width/viewport_height;			if (waspect<params[1])			{				float 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;			}		}	}		/**	 * getObjects()	 * get objects from the scene tree for use in the game AI	 */	public void getObjects()	{		try		{			tRoo 	= (Group) myWorld.find(POGOROO_MOVE_GROUP_TRANSFORM_ID);			tCams 	= (Group) myWorld.find(CAMERA_GROUP_TRANSFORM_ID);			acRoo 	= (Group) myWorld.find(POGOROO_TRANSFORM_ID);			animRoo	= (AnimationController) myWorld.find(ROO_BOUNCE_ID);			// get length of animation			AnimationTrack track = acRoo.getAnimationTrack(0);			animLength = 1000; // default length, 1 second			if (track != null)			{				KeyframeSequence ks = track.getKeyframeSequence();				if (ks != null)					animLength = ks.getDuration();			}		}		catch(Exception e)		{			e.printStackTrace();		}	}	/**	 * hopRoo()	 * Hops the roo backwards or forwards	 */	private void hopRoo()	{		// Move the kangeroo across the ground, but synchronise with animation		if (animTime == 0) // OK to start!		{			hopCount = 0;			okToHop = true;		}				// in hopping sequence		if (okToHop)		{			switch(keyMoveRoo)			{				case keyForward:				case keyBackward:					// move according to direction and increment from look up table 					// to get nice hop effect					int oldHopCount = hopCount;					hopCount = (animTime * 10)/animLength;												// end of sequence					if (hopCount >= MaxHops)					{						okToHop = false;						hopCount = MaxHops-1;					}					// add up all the steps inbetween positions in animation					// this code always misses out increment zero, but that's					// OK because it's zero anyway!					turnAngle = (dirRoo * 3.14159f) / 180.0f;					float h = 0f;										for (int i = (oldHopCount+1); i <= hopCount; i++)						h += hopSteps[i];											float x = h * (float)Math.cos(turnAngle);					float y = h * (float)Math.sin(turnAngle);										if (keyMoveRoo == keyForward)						tRoo.translate(-x, -y, 0.0f);					else						tRoo.translate(x, y, 0.0f);					break;			}		}	}		/**	 * checkWorldEdge()	 * Stops the roo going off the edge of the world	 */	private void checkWorldEdge()	{		// going off edge of ground		tRoo.getTranslation(posRoo);				if (edgeCount > 0)			edgeCount--;					try		{			// check to see if we have reached the edge of the world			if (Math.abs(posRoo[0]) > GroundEdge || Math.abs(posRoo[1]) > GroundEdge)			{				edgeCount = 10;				tRoo.setTranslation(posRooLast[0], posRooLast[1], posRooLast[2]);			}		}		catch(Exception e)		{			e.printStackTrace();		}		}		/**	 * turnRoo()	 * Turns the roo and makes sure the camera follows.	 */	private void turnRoo()	{		// turning Roo can happen any time		switch(keyTurnRoo)		{			case keyLeft:				dirRoo += 5f;				dirCam -= 5f;				tRoo.setOrientation(dirRoo, 0, 0, 1);				tCams.setOrientation(dirCam, 0, 0, 1);				break;			case keyRight:				dirRoo -= 5f;				dirCam += 5f;				tRoo.setOrientation(dirRoo, 0, 0, 1);				tCams.setOrientation(dirCam, 0, 0, 1);				break;							default:				if (dirCam > 4.9f)					dirCam -= 5.0f;				else if (dirCam < -4.9f)					dirCam += 5.0f;				else					dirCam = 0.0f;				tCams.setOrientation(dirCam, 0, 0, 1);				break;		}	}		/**	 * animateRoo()	 * Makes sure that the hopping animation loops correctly.	 */	private void animateRoo(int worldTime)	{		// control the kangeroo animation sequence		if (animLastTime == 0)			animLastTime = worldTime;		animTime += (worldTime-animLastTime);				// initialise animation at end of sequence		if (animTime > animLength) // sequence is ~1000ms		{			animRoo.setActiveInterval(worldTime, worldTime+2000);			animRoo.setPosition(0, worldTime);			animTime = 0;		}				// update storage of last position and time		animLastTime = worldTime;		}		/**	 * moveRoo()	 * Act on key presses and any collision detection to move the kangeroo	 */	private void moveRoo(int worldTime)	{		hopRoo();						checkWorldEdge();				turnRoo();			animateRoo(worldTime);		tRoo.getTranslation(posRooLast);	}		/**	 * pauseApp()	 */	public void pauseApp()	{	}	/**	 * destroyApp()	 */	public void destroyApp(boolean unconditional) throws MIDletStateChangeException	{			myRefreshTimer.cancel();		myRefreshTimer = null;		myRefreshTask = null;	}	/**	 * MIDlet paint method.	 */	public void paint(Graphics g)	{		// clear any area of the screen that is not drawn to by m3g		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());		}		// render the 3D scene		if ((myGraphics3D != null) && (myWorld != null))		{			myGraphics3D.bindTarget(g);			myGraphics3D.setViewport(viewport_x, viewport_y, viewport_width, viewport_height);			myGraphics3D.render(myWorld);			myGraphics3D.releaseTarget();		}	}	/**	 * MIDlet keyEvent method.	 */	public void keyEvent(int type, int keyCode)	{		switch(type)		{			case KEY_REPEATED : break;			case KEY_PRESSED :				// game movement keys -	Roo requires synchronised move with animation, 				// so can only accept key press when last move is complete				if (keyMoveRoo == keyNone)				{					switch(myCanvas.getGameAction(keyCode))					{						case Canvas.FIRE: break;						case Canvas.UP: keyMoveRoo = keyForward; break;						case Canvas.DOWN: keyMoveRoo = keyBackward; break;					}										if (keyMoveRoo != keyNone)						hopCount = MaxHops;				}				// Roo can turn when it likes				switch(myCanvas.getGameAction(keyCode))				{					case Canvas.LEFT: keyTurnRoo = keyLeft; break;					case Canvas.RIGHT: keyTurnRoo = keyRight; break;				}									break;			case KEY_RELEASED :				switch(myCanvas.getGameAction(keyCode))				{					case Canvas.LEFT: //intentional fall through					case Canvas.RIGHT: keyTurnRoo = keyNone; break;					case Canvas.UP: //intentional fall through					case Canvas.DOWN: keyMoveRoo = keyNone; break;				}				break;			default :				throw new IllegalArgumentException();		}	}	/**	 * Handle commands.	 */	public void commandAction(Command cmd, Displayable disp)	{		if (cmd == exitCommand)		{			try			{				destroyApp(false);				notifyDestroyed();			}			catch(Exception e)			{				e.printStackTrace();			}		}	}	/**	 * Inner class for refreshing the view.	 */	private class RefreshTask extends TimerTask	{		public void run()		{			// Get the canvas to repaint itself.			if(myCanvas != null && myGraphics3D != null && myWorld != null)			{				int startTime = (int)System.currentTimeMillis();				// update the control and game AI				moveRoo(startTime);				// Update the world to the current time.				int validity = myWorld.animate(startTime);				// Cause a repaint				myCanvas.repaint(viewport_x, viewport_y, viewport_width, viewport_height);			}		}	}	/**	 * Inner class for handling the canvas.	 */	class PogoRooCanvas extends Canvas	{		PogoRooMIDlet myRooMIDlet;		/**		 * Construct a new canvas		 */		PogoRooCanvas(PogoRooMIDlet Testlet) { myRooMIDlet = Testlet; }		/**		 * Initialize self.		 */		void init() { }		/**		 * Cleanup and destroy.		 */		void destroy() { }		/*		 * Ask myRooMIDlet to paint itself		 */		protected void paint(Graphics g) { myRooMIDlet.paint(g); }		/*		 * Ask myRooMIDlet to handle keyPressed events		 */		protected void keyPressed(int keyCode) { myRooMIDlet.keyEvent(myRooMIDlet.KEY_PRESSED, keyCode); }		/*		 * Ask myRooMIDlet to handle keyReleased events		 */		protected void keyReleased(int keyCode) { myRooMIDlet.keyEvent(myRooMIDlet.KEY_RELEASED, keyCode); }		/*		 * Ask myRooMIDlet to handle keyRepeated events		 */		protected void keyRepeated(int keyCode) { myRooMIDlet.keyEvent(myRooMIDlet.KEY_REPEATED, keyCode); }		/*		 * Ask myRooMIDlet to handle pointerDragged events		 */		protected void pointerDragged(int x, int y) { }		/*		 * Ask myRooMIDlet to handle pointerPressed events		 */		protected void pointerPressed(int x, int y) { }		/*		 * Ask myRooMIDlet to handle pointerReleased events		 */		protected void pointerReleased(int x, int y) { }	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品系列在线观看| 欧美一区二区视频观看视频| 97精品国产露脸对白| 欧美肥妇毛茸茸| 中文字幕日本乱码精品影院| 日韩成人午夜电影| 在线免费观看日韩欧美| 久久精品亚洲乱码伦伦中文| 亚洲成av人片www| 不卡影院免费观看| 久久久久久久久99精品| 偷拍一区二区三区四区| 色噜噜夜夜夜综合网| 国产人妖乱国产精品人妖| 久久99国内精品| 欧美一区中文字幕| 亚洲国产aⅴ天堂久久| 91丨九色丨国产丨porny| 国产亚洲成aⅴ人片在线观看 | 成人国产精品免费观看动漫| 欧美不卡视频一区| 人人精品人人爱| 91精品一区二区三区在线观看| 亚洲精品菠萝久久久久久久| 不卡一区中文字幕| 国产精品少妇自拍| av一区二区久久| 国产精品成人一区二区三区夜夜夜| 国产精品911| 国产欧美一区视频| 成人自拍视频在线| 亚洲欧洲另类国产综合| 成人动漫一区二区在线| 国产午夜精品在线观看| 成人综合婷婷国产精品久久蜜臀| 欧美激情综合五月色丁香| 高清不卡在线观看av| 国产欧美中文在线| 91麻豆免费视频| 亚洲大型综合色站| 91精品国模一区二区三区| 日本中文字幕一区二区视频 | 国产色综合一区| 不卡av在线网| 亚洲激情校园春色| 欧美久久久久久久久中文字幕| 日本欧美一区二区三区| 日韩一区二区免费在线观看| 麻豆91在线观看| 国产欧美日本一区二区三区| 91一区二区在线| 亚洲不卡一区二区三区| 精品国产乱码久久久久久图片| 国产精品一区二区黑丝| 亚洲色图视频免费播放| 欧美日韩免费一区二区三区| 久久精品99久久久| 国产精品激情偷乱一区二区∴| 欧美色爱综合网| 久久精品国产精品亚洲综合| 欧美激情在线看| 欧美日韩精品一区二区三区| 精品无码三级在线观看视频| 国产精品久久久久久久岛一牛影视| 欧美视频在线一区| 国产精品自在在线| 亚洲成av人片一区二区| 国产日产欧美一区| 678五月天丁香亚洲综合网| 国产精品一区二区免费不卡 | 亚洲欧洲成人精品av97| 欧美日韩午夜精品| 高清免费成人av| 日韩国产欧美三级| 亚洲色图一区二区三区| 欧美大白屁股肥臀xxxxxx| 91在线视频观看| 精品在线你懂的| 亚洲高清视频在线| 欧美经典三级视频一区二区三区| 欧美日产在线观看| 99久久er热在这里只有精品66| 麻豆精品久久久| 亚洲香肠在线观看| 欧美国产视频在线| 精品免费视频.| 91麻豆精品国产91久久久久 | 日韩欧美成人午夜| 欧美天堂一区二区三区| 99久久精品免费精品国产| 久久国内精品自在自线400部| 一级中文字幕一区二区| 国产精品污污网站在线观看| 欧美tickling挠脚心丨vk| 精品视频免费在线| 色婷婷精品大视频在线蜜桃视频| 国产精品一区二区果冻传媒| 久久成人av少妇免费| 日韩专区欧美专区| 午夜欧美2019年伦理| 一区二区三区欧美| 一区二区三区免费网站| 18成人在线视频| 国产精品乱码一区二区三区软件| 久久一二三国产| 久久一夜天堂av一区二区三区| 欧美成人一区二区三区在线观看 | 中文字幕久久午夜不卡| 2020国产成人综合网| 欧美成人官网二区| 精品久久久久香蕉网| 精品国产乱码久久久久久牛牛| 日韩一区二区在线看| 日韩午夜电影av| 欧美va亚洲va在线观看蝴蝶网| 欧美一级专区免费大片| 日韩一级欧美一级| 精品国精品国产尤物美女| 日韩三级视频中文字幕| 久久久影院官网| 中文字幕不卡在线| 亚洲天堂网中文字| 一区二区三区久久久| 亚洲国产中文字幕| 日本不卡一二三区黄网| 麻豆91在线观看| 成人黄页毛片网站| 欧美最猛性xxxxx直播| 欧美日韩国产123区| 日韩视频免费观看高清完整版在线观看 | 欧美videofree性高清杂交| 精品处破学生在线二十三| 中文字幕精品—区二区四季| 一区在线中文字幕| 亚洲国产视频网站| 美女任你摸久久| 成人黄色一级视频| 欧美视频一区二| 久久久精品tv| 亚洲最快最全在线视频| 奇米777欧美一区二区| 国产二区国产一区在线观看| 91视频精品在这里| 日韩欧美国产三级| 中文字幕亚洲在| 免费不卡在线视频| 99久免费精品视频在线观看| 欧美午夜精品电影| 欧美韩国一区二区| 日韩高清电影一区| 国产v综合v亚洲欧| 9191精品国产综合久久久久久| 久久精品一级爱片| 日韩专区一卡二卡| 91丝袜国产在线播放| 日韩欧美色电影| 亚洲一区日韩精品中文字幕| 激情五月激情综合网| 91色|porny| 欧美激情中文不卡| 另类人妖一区二区av| 成人av免费在线| 亚洲精品在线免费观看视频| 一区二区三区 在线观看视频| 国产乱码精品一区二区三区五月婷| 91黄色免费看| 国产欧美一区二区精品性色| 天堂资源在线中文精品| 成人免费不卡视频| 26uuu国产在线精品一区二区| 亚洲一二三级电影| 99re热视频精品| 久久精品一区二区| 激情图区综合网| 91精品国产欧美一区二区成人| 一区二区在线观看免费| 国产成人亚洲精品青草天美| 日韩免费性生活视频播放| 五月天网站亚洲| 欧美色图12p| 玉足女爽爽91| 91啦中文在线观看| 国产日本一区二区| 国产不卡高清在线观看视频| 久久先锋资源网| 久久www免费人成看片高清| 日韩限制级电影在线观看| 天天av天天翘天天综合网色鬼国产 | 国产99久久久国产精品免费看 | 欧美日韩一区在线| 亚洲欧美日韩精品久久久久| 波多野结衣中文字幕一区二区三区 | jizzjizzjizz欧美| 国产精品久久久久久一区二区三区 | 极品少妇xxxx精品少妇| 欧美电影免费观看高清完整版在线观看 | 欧美伦理影视网| 丝袜亚洲另类欧美| 91精品国产一区二区三区蜜臀| 亚洲一级二级在线|