Статус:
Offline
Реєстрація: 26.09.2008
Повідом.: 101
Реєстрація: 26.09.2008
Повідом.: 101
Всем доброго времени суток. Подскажите как добиться работы реакции на клавиатуру.
Вот код но он не реагирует:
код класса Draw
Вот код но он не реагирует:
HTML:
package newpackage;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;
public class MainClassKeyAct extends MIDlet implements CommandListener{
private Command exitMidlet = new Command("Выход", Command.EXIT, 0);
public void startApp() {
Draw dr = new Draw();
dr.start();
dr.addCommand(exitMidlet);
dr.setCommandListener(this);
Display.getDisplay(this).setCurrent(dr);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void commandAction(Command c, Displayable d) {
if (c == exitMidlet){
destroyApp(false);
notifyDestroyed();
}
}
}
HTML:
package newpackage;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
public class Draw extends Canvas implements Runnable{
int positionX = getWidth()/2;
int positionY = getHeight()/2;
public Draw(){
super();
}
public void start(){
Thread t = new Thread(this);
t.start();
}
protected void paint(Graphics g) {
int x = g.getClipWidth();
int y = g.getClipHeight();
g.setColor(0xffffff);
g.fillRect(0, 0, x, y);
g.setColor(0, 0, 200);
g.fillRect(positionX, positionY, 20, 20);
}
public void run() {
while(true){
repaint();
try{
Thread.sleep(20);
}catch(InterruptedException e){
}
}
}
protected void keyPressed(int keyCode){
int speed = 3;
int act = getGameAction(keyCode);
switch(act){
case Canvas.LEFT:
positionX -= speed;
break;
case Canvas.RIGHT:
positionX += speed;
break;
case Canvas.UP:
positionY -= speed;
break;
case Canvas.DOWN:
positionY += speed;
break;
default:
break;
}
}
}