⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 examplegamesprite.java

📁 J2ME的源码!我以前学习J2ME的源码哈!非常适合初学者
💻 JAVA
字号:
package TestSprite;

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.game.TiledLayer;

public class ExampleGameSprite extends GameCanvas implements Runnable{
	private boolean isplay;
	private int width,height;
	private final static int STEP=3;
	private Sprite hero=null;
	private TiledLayer bg=null;
	private int framewidth,frameheight;
	private int lastState=-1;
	private Image m_BackImg;

	public ExampleGameSprite(){
		super(true);
		width=getWidth();
		height=getHeight();
		try{
			Image image=Image.createImage("/ren.PNG");
			
			Image c_image = Image.createImage("/mountain.png");
			bg=new TiledLayer(1,1,c_image,433,214);//1行1列,引用c_image,图象的宽,高;
			bg.setPosition(0,0);
			bg.setCell(0,0,1);//0,0是设置0行0列,1是指第一帧图象
			
			
			
			hero=new Sprite(image,128,204);
			hero.setPosition(50, -15);//这里定义的是X与Y的起始位置;
			//framewidth=160;
			//frameheight=204;
			
			
		}
		catch(Exception e){
			e.printStackTrace();
		}
		
	}
	public void start(){
		isplay=true;
		Thread t=new Thread(this);//一定记得在这里加入this 才能进入调用
		t.start();
	}
	public void stop(){isplay=false;}
	

	protected ExampleGameSprite(boolean arg0) {
		super(arg0);
		
	}

	public void run() {
		Graphics g=getGraphics();
		int timeStep=100;
		while(isplay){
			long start=System.currentTimeMillis();
			input();
			draw(g);
			long end=System.currentTimeMillis();
			int duration=(int)(end-start);
			if(duration<timeStep){
				try{
					Thread.sleep(timeStep-duration);
				}
				catch(InterruptedException ie){
					
				}
			}
		}
	}
		private void input(){
			int keyStates=getKeyStates();
			if((keyStates&LEFT_PRESSED)!=0){
				if(lastState!=LEFT_PRESSED){
					lastState=LEFT_PRESSED;
					//hero.setFrameSequence(new int[]{1,2,3,4,5});
				}
				else{
					//hero.nextFrame();
				}
				//if(hero.getX()-STEP>=0)
					hero.move(-STEP, 0);
				//else
					//hero.setPosition(0, hero.getY());
						hero.nextFrame();
						
						/*
						 
						 * 
						 * if(hero.getX()-STEP>=0)
								hero.move(-STEP, 0);
						   else
								hero.setPosition(0, hero.getY());
									hero.nextFrame();
						 * 
						 * 若将上述四句改为
						 * * hero.move(-STEP, 0);
						 * hero.nextFrame();
						 * 运行时人物可以跑出左边框
						 */
						
						hero.setTransform(Sprite.TRANS_NONE);
						
						
			}
			
			if((keyStates&RIGHT_PRESSED)!=0){
				
				if(lastState!=RIGHT_PRESSED){
					lastState=RIGHT_PRESSED;
					//hero.setFrameSequence(new int[]{2});
				}
				
				else{
					//hero.nextFrame();
				}
				if(hero.getX()+framewidth<width)
					hero.move(STEP, 0);
				else
					hero.setPosition(width-framewidth,hero.getY() );
						hero.setTransform(Sprite.TRANS_MIRROR);
						hero.nextFrame();
						bg.setPosition(-15,100);	
				}
}
			/*if((keyStates&UP_PRESSED)!=0){
				if(lastState!=UP_PRESSED){
					lastState=UP_PRESSED;
					hero.setFrameSequence(new int[]{1});
				}
				else{
					hero.nextFrame();
				}
				if(hero.getY()-STEP>=0)
					hero.move(0, -STEP);
				else
					hero.setPosition(hero.getX(), 0);
						
			}
			if((keyStates&DOWN_PRESSED)!=0){
				if(lastState!=DOWN_PRESSED){
					lastState=DOWN_PRESSED;
					hero.setFrameSequence(new int[]{4});
				}
				else{
					hero.nextFrame();
				}
				if(hero.getY()+frameheight<height)
					hero.move(0,STEP);
				else
					hero.setPosition(hero.getX(),height-frameheight);
				}
			if(keyStates==0)hero.setFrame(0);
		}*/
		private void draw(Graphics g){
			g.setColor(0,0,0);
			g.fillRect(0, 0, width, height);
			bg.paint(g);//若将这句放在hero.paint(g)的下面则会使人物在背景之后;
			hero.paint(g);
			
			flushGraphics();
		}
			
		}
				
			
				
			
			
		


		
		

⌨️ 快捷键说明

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