animationtest2.java
来自「java手机程序开发随书光盘源代码」· Java 代码 · 共 161 行
JAVA
161 行
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
public class AnimationTest2 extends MIDlet{
Display display;
MyCanvas myCanvas;
public AnimationTest2(){
display = Display.getDisplay(this);
myCanvas = new MyCanvas();
}
public void startApp(){
myCanvas.start();
display.setCurrent(myCanvas);
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
}
class MyCanvas extends Canvas implements CommandListener{
int gameAction;
Sprite sprite;
Command exitCmd;
Image offScreen;
Image spriteImage;
int interval = 300;
public MyCanvas(){
if(!isDoubleBuffered()){
offScreen = Image.createImage(getWidth(), getHeight());
}
try{
spriteImage = Image.createImage("/sprite0-2.png");
}
catch(Exception ex){}
sprite = new Sprite(this, spriteImage);
exitCmd = new Command("退出", Command.EXIT, 1);
addCommand(exitCmd);
setCommandListener(this);
}
public void paint(Graphics g){
Graphics old = g;
if(offScreen != null){
g = offScreen.getGraphics();
}
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
sprite.paintSprite(g);
g.setColor(0);
g.drawString("间隔:"+interval+"ms",
10,
getHeight() - 20,
Graphics.LEFT|Graphics.TOP);
if(g != old){
old.drawImage(offScreen, 0, 0, Graphics.LEFT|Graphics.TOP);
}
}
void start(){
sprite.start();
}
public void keyPressed(int keyCode){
int gameAction = getGameAction(keyCode);
switch(gameAction){
case Canvas.LEFT:
interval -= 100;
if(interval <= 200) interval = 200;
sprite.setInverval(interval);
break;
case Canvas.RIGHT:
interval += 100;
if(interval >= 2000) interval = 2000;
sprite.setInverval(interval);
break;
}
repaint();
}
public void keyReleased(int keyCode){
}
public void keyRepeated(int keyCode){
}
public void commandAction(Command c, Displayable d){
if(c == exitCmd){
destroyApp(true);
notifyDestroyed();
}
}
}
class Sprite extends Thread{
int gameAction;
int x, y;
int width, height;
Image image;
MyCanvas canvas;
int index = 0;
int timeInterval;
Random random = new Random();
int frame = 3;
int[] order = {0, 1, 2, 1};
public Sprite(MyCanvas canvas, Image image){
super();
this.image = image;
this.canvas = canvas;
width = image.getWidth()/frame;
height = image.getHeight();
x = (canvas.getWidth()-width)/2;
y = (canvas.getHeight()-height)/2;
timeInterval = 500;
}
public void paintSprite(Graphics g){
g.translate(-order[index]*width, 0);
g.setClip(x+order[index]*width, y, width, height);
g.drawImage(image, x, y, Graphics.LEFT|Graphics.TOP);
g.translate(order[index]*width, 0);
g.setClip(0, 0 , canvas.getWidth(), canvas.getHeight());
index++;
index %= order.length;
}
public void run(){
while(true){
canvas.repaint(x, y, width, height);
try{
Thread.sleep(timeInterval);
}
catch(Exception ex){}
}
}
public void setInverval(int interval){
timeInterval = interval;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?