import java.io.IOException;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.Sprite;
public class keyEvent extends MIDlet {
private Display dis;
private myCanva mc=new myCanva();
public keyEvent() {
// TODO Auto-generated constructor stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
dis=Display.getDisplay(this);
mc.setTitle("画布按键");
dis.setCurrent(mc);
}
}
class myCanva extends Canvas
{
//GAME_A,B,C,D分别对应1,3,7,9
private final static int xspeed=5,yspeed=5;
private int x=this.getWidth()/2,y=this.getHeight()/2;
int dir=Sprite.TRANS_NONE;
Image img;
myCanva()
{try {
img=Image.createImage("/16.png");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}
protected void keyPressed(int keyCode) {
// TODO Auto-generated method stub
super.keyPressed(keyCode);
/*if(this.getGameAction(keyCode)==Canvas.UP)
y-=yspeed;
else if(this.getGameAction(keyCode)==Canvas.DOWN)
y+=yspeed;
else if(this.getGameAction(keyCode)==Canvas.LEFT)
x-=xspeed;
else if(this.getGameAction(keyCode)==Canvas.RIGHT)
x+=xspeed;*/
switch(this.getGameAction(keyCode)) //特殊键要进行转换
{
case Canvas.UP:y-=yspeed;break;
case Canvas.DOWN:y+=yspeed;break;
case Canvas.LEFT:x-=xspeed;break;
case Canvas.RIGHT:x+=xspeed;break;
case Canvas.FIRE: //改变方向
switch(dir)
{
case Sprite.TRANS_NONE:dir=Sprite.TRANS_ROT90;break;
case Sprite.TRANS_ROT90:dir=Sprite.TRANS_ROT180;break;
case Sprite.TRANS_ROT180:dir=Sprite.TRANS_ROT270;break;
case Sprite.TRANS_ROT270:dir=Sprite.TRANS_NONE;break;
}
}
repaint();
}
protected void keyReleased(int keyCode) {
// TODO Auto-generated method stub
super.keyReleased(keyCode);
}
protected void keyRepeated(int keyCode) {
// TODO Auto-generated method stub
super.keyRepeated(keyCode);
}
protected void paint(Graphics g) {
// TODO Auto-generated method stub
g.setColor(255, 255, 255);
g.fillRect(0, 0, this.getWidth(), this.getHeight()); //刷屏
g.drawRegion(img,0,0,img.getWidth(),img.getHeight(),dir,x, y, Graphics.HCENTER|Graphics.VCENTER);
}
}
本文介绍了一个简单的Java ME应用程序,该程序演示了如何通过按键事件来控制画布上的图像移动和旋转。文章提供了完整的代码实现,并解释了如何利用Canvas类处理按键事件,使图像能够根据用户输入上下左右移动及旋转。

3504

被折叠的 条评论
为什么被折叠?



