📄 playcanvas.java
字号:
package src;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;
public class PlayCanvas extends GameCanvas implements Runnable{
private GameMIDlet midlet = null;
private LayerManager layerManager = null;
private BackGroundLayer backGroundLayer = null;
private PlayerLayer player = null;
public static RectangleLayer rectangle = null;
private Graphics g = null;
private boolean isPaused = false;
protected PlayCanvas(boolean arg0,GameMIDlet midlet) {
super(arg0);
// TODO 自动生成构造函数存根
this.midlet = midlet;
g = this.getGraphics();
layerManager = new LayerManager();
player = new PlayerLayer(layerManager,this);
rectangle = new RectangleLayer(layerManager);
backGroundLayer = new BackGroundLayer(layerManager);
}
public void start() {
Thread t = new Thread(this);
t.start();
}
public boolean pause()
{
if(!isPaused)
{
isPaused = true;
return isPaused;
}
else
{
isPaused = false;
return isPaused;
}
}
public void run() {
// TODO Auto-generated method stub
while(true)
{
while(!isPaused) //未暂停时游戏循环
{
this.keyAction();
long startTime = System.currentTimeMillis();
backGroundLayer.update();
rectangle.update();
player.update();
draw(g);
long takenTime = System.currentTimeMillis() - startTime;
if (takenTime < 40)
{
try
{
Thread.sleep(40 - takenTime);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
}
}
}
private void draw(Graphics g)
{
g.setColor(0x000000);
g.fillRect(0,0, this.getWidth(), this.getHeight());
layerManager.paint(g, 0, 0);
flushGraphics();
}
private void keyAction()
{
int keyStates = getKeyStates();
Sprite p = player.getPlayer();
if ((keyStates & LEFT_PRESSED) != 0 ) //左
{
if(p.getX() < 15)
{
p.setPosition(15, p.getY());
}
if(lastState!=MOVE_LEFT)
{
p.setFrameSequence(new int []{0,1,2,3});
lastState = MOVE_LEFT;
}
else{
p.nextFrame();
p.move(-GameMIDlet.MOVE_X_SPEED, 0);
}
}
else if ((keyStates & RIGHT_PRESSED) != 0 ) //右
{
if(p.getX() > this.getWidth()-35)
{
p.setPosition(this.getWidth()-35, p.getY());
}
if(lastState!=MOVE_RIGHT)
{
p.setFrameSequence(new int[]{9,10,11,12});
lastState = MOVE_RIGHT;
}
else{
p.nextFrame();
p.move(GameMIDlet.MOVE_X_SPEED,0);
}
}
else if(((keyStates & DOWN_PRESSED) != 0 ) )
{
player.update();
}
else if(((keyStates & UP_PRESSED) != 0 ) )
{
player.moveUP();
}
if (keyStates==0 )
{
if(lastState!=MOVE_STOP)
{
p.setFrameSequence(new int[]{8});
lastState=MOVE_STOP;
}
}
}
public GameMIDlet getMIDlet()
{
return midlet;
}
public BackGroundLayer getBackGroundLayer()
{
return backGroundLayer;
}
public RectangleLayer getRectangleLayer()
{
return rectangle;
}
public PlayerLayer getPlayerLayer()
{
return player;
}
private int lastState = -1;
private final int MOVE_STOP = 0;
private final int MOVE_LEFT = 1;
private final int MOVE_RIGHT = 2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -