📄 maincanvas.java
字号:
package demo;
import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;
public class MainCanvas extends GameCanvas implements Runnable{
private boolean m_bRunning; //控制项目运行
private MySprite m_CockSprite; //小鸡精灵
private Image m_BackImg; //背景图像
private boolean m_bLeft = true;
public MainCanvas(){
super(true);
try{
//读取图片信息
m_BackImg = Image.createImage("/demo/back.png");
Image image = Image.createImage("/demo/cock.png");
//创建小鸡精灵
m_CockSprite = new MySprite( image, 95, 85 );
//设置精灵当前显示的“帧”编号
m_CockSprite.setFrame( 0 );
//getWidth与getHeight可分别获取屏幕的宽度和高度
int nPosX = getWidth();
int nPosY = getHeight() - 90;
//设置精灵左上角的位置
m_CockSprite.setPosition( nPosX , nPosY );
}
catch (IOException e){} //此处不进行错误处理
Start(); //启动线程
}
public void Start(){
m_bRunning = true;
Thread thread = new Thread(this); //分配新线程
thread.start(); //线程启动
}
public void run() { //新线程自动调用此方法
//获得系统当前时间,并将时间换算成毫秒
long T1 = System.currentTimeMillis();
long T2 = T1;
while(m_bRunning){
T2 = System.currentTimeMillis();
if( T2 - T1 > 100 ){ //间隔100毫秒
T1 = T2;
Input();
Logic();
Paint();
}
}
}
public void Stop(){ //终止游戏
m_bRunning = false;
}
public void Input(){
}
public void Logic(){
//更换精灵当前显示的“帧”编号,“帧”编号不能大于上限
int n = m_CockSprite.getFrame();
n ++;
//getFrameSequenceLength可获取精灵图像中“帧”的个数
if( n >= m_CockSprite.getFrameSequenceLength() )
n = 0;
m_CockSprite.setFrame(n);
//设置精灵的位置,如果精灵超出屏幕左侧,则让精灵从右侧重新出现
int nPosX = m_CockSprite.getX();
int nPosY = m_CockSprite.getY();
if( m_bLeft ){
m_CockSprite.setTansform(MySprite.TRANS_NONE);
nPosX -= 3;
if( nPosX < -95 )
m_bLeft = false;
}
else{
m_CockSprite.setTansform(MySprite.TRANS_MIRROR);
nPosX += 3;
if( nPosX > getWidth() )
m_bLeft = true;
}
m_CockSprite.setPosition( nPosX, nPosY );
}
public void Paint(){
Graphics g = getGraphics();
//用黑色清屏
g.setColor(0);
g.fillRect( 0, 0, getWidth(), getHeight() );
//显示背景,并将背景图像的中心点对应到屏幕中心点
int nPosX = getWidth()/2 - 100;
int nPosY = getHeight()/2 - 100;
g.drawImage( m_BackImg, nPosX, nPosY, 0);
//显示精灵的当前“帧”
m_CockSprite.paint(g);
flushGraphics();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -