📄 movecanvas.java
字号:
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
public class MoveCanvas extends GameCanvas implements Runnable
{
//声明图片名称的字符串
private StringBuffer resPiece1 = new StringBuffer( "/piece1.png");
private int level = 0;
//声明图片对象
private Image pieceRedImg;
//声明游戏精灵对象
private Sprite sprite;
//声明图层管理对象
private LayerManager manager;
//设置图片移动位置的X和Y坐标
int moveX = 0;
int moveY = 0;
//声明线程类对象
Thread gameThread;
public MoveCanvas(){
//不抑制键盘,使用MIDP1.0中的按键响应事件
super(false);
}
//初始化
public void init()
{
try{
//获取图片对象
pieceRedImg = Image.createImage(resPiece1.toString());
//调用初始化游戏屏幕
readScreen();
}catch(Exception e){
e.printStackTrace();
}
}
/**
初始化游戏屏幕的方法
*/
public void readScreen(){
try{
Graphics g = getGraphics();
sprite = new Sprite( pieceRedImg);
//小球初始化位置的X和Y坐标
sprite.move(16,16);
manager = new LayerManager();
//向图层添加代表小球的精灵对象
manager.append(sprite);
manager.paint(g,0,0);
}catch(Exception e){
System.out.println("exception:"+e.getMessage());
}
}
public void destroy(){
}
//显示屏幕时触发的方法
public void showNotify(){
gameThread = new Thread(this);
gameThread.start();
}
//隐藏屏幕时触发的方法
public void hideNotify()
{
gameThread = null;
}
/**
* 游戏主循环方法
*/
public void run() {
while (true) {
try {
Layer layer = manager.getLayerAt(0);
System.out.println("moveX:moveY"+moveX+" "+moveY);
layer.move(moveX,moveY);
manager.insert(layer,0);
Graphics g = getGraphics();
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
manager.paint(g,0,0);
//重绘屏幕
repaint() ;
moveX = 0;
moveY = 0;
try {
int PanRate = 50;
gameThread.sleep(PanRate);
} catch (java.lang.InterruptedException e) {
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
/**
*处理按键连续按下的方法
*/
protected void keyRepeated(int keyCode) {
int action = getGameAction(keyCode);
switch (action) {
case Canvas.LEFT:
case Canvas.RIGHT:
case Canvas.UP:
case Canvas.DOWN:
keyPressed(keyCode);
break;
default:
break;
}
}
/**
*处理按键按下的方法
*/
protected void keyPressed(int keyCode) {
int action = getGameAction(keyCode);
int move = 0;
switch (action) {
case Canvas.LEFT:
moveX = -8;
break;
case Canvas.RIGHT:
moveX = 8;
break;
case Canvas.DOWN:
moveY = 8;
break;
case Canvas.UP:
moveY = -8;
break;
default:
moveX = 0;
moveY = 0;
return;
}
}
//绘制方法
public void paint(Graphics g){
flushGraphics() ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -