📄 examplegamesprite.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 + -