public class DragonflyCanvas extends GameCanvas implements Runnable{ private static final int CELL_WIDTH=95; private static final int CELL_HEIGHT=34; private boolean isRunning=true; private int[] aniSequence={0,1,2,1,0,1,2,1,0,1,2}; int dragonflyX; int dragonflyY; Sprite dragonfly; public DragonflyCanvas(){ super(false); setFullScreenMode(true); dragonflyX=100; dragonflyY=100; Image imgDragonflyImage=null; try{ imgDragonflyImage=Image.createImage("/dragonfly.jpg"); }catch (IOException e) { e.printStackTrace(); } //创建蜻蜓对象 dragonfly=new Sprite(imgDragonflyImage,CELL_WIDTH,CELL_HEIGHT); dragonfly.setFrameSequence(aniSequence); //缺省方向向右 dragonfly.setTransform(Sprite.TRANS_MIRROR); dragonfly.setPosition(dragonflyX, dragonflyY); new Thread(this).start(); } public void run() { Graphics graphics=getGraphics(); isRunning=true; while(isRunning){ int keyState=getKeyStates(); if((keyState & LEFT_PRESSED)!=0){ dragonfly.setTransform(Sprite.TRANS_NONE); dragonflyX-=5; dragonfly.setPosition(dragonflyX,dragonflyY); }else if((keyState & RIGHT_PRESSED)!=0){ dragonfly.setTransform(Sprite.TRANS_MIRROR); dragonflyX+=5; dragonfly.setPosition(dragonflyX, dragonflyY); }else if((keyState & UP_PRESSED)!=0){ // dragonfly.setTransform(Sprite.TRANS_MIRROR_ROT90); dragonflyY-=5; dragonfly.setPosition(dragonflyX, --dragonflyY); }else if((keyState & DOWN_PRESSED)!=0){ // dragonfly.setTransform(Sprite.TRANS_ROT270); dragonflyY+=5; dragonfly.setPosition(dragonflyX, dragonflyY); } graphics.setColor(0xFFFFFF); graphics.fillRect(0, 0, getWidth(), getHeight()); dragonfly.nextFrame(); dragonfly.paint(graphics); flushGraphics(); try{ Thread.sleep(200); }catch (InterruptedException e) { e.printStackTrace(); } } } }