Змінюй хід війни! Допомагай ЗСУ!

JavaME

🔴 03:38 Повітряна тривога в Харків.обл.
Статус: Offline
Реєстрація: 26.09.2008
Повідом.: 101
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #1
Всем доброго времени суток. Подскажите как добиться работы реакции на клавиатуру.
Вот код но он не реагирует:

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();
        }
    }
}
код класса Draw

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;
        }
    }
}
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #2
Почитал бы ты книжку Хострмана "core java2 том 1" в глоссарии раздел приемы отладки
System.out.println в помощь =)
javaME никогда в глаза не видел но не вижу нигде в коде addKeyListener
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #3
Почитал бы ты книжку Хострмана "core java2 том 1" в глоссарии раздел приемы отладки
System.out.println в помощь =)
javaME никогда в глаза не видел но не вижу нигде в коде addKeyListener

Как я понимаю на JavaME немного по другому реализован слушатель клавиатуры телефона и addKeyListener просто нет. В ME события по обработке нажатия клавиш обрабатывает класс Canvas и несколько методов, одним из которых является keyPressed
 
Останнє редагування:
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #4
в любом случае принтЛН в помощь, а там уже консоль читай, входит ли вообще программа в нужный участок кода
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #5
В любом случае спс за помощь
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #6
в нетбинсах можно отлично отлагивать j2me приложения, поставь mobility плагин
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #8
Плагин стоит и ошибок нет но прога не пашет :(

поставить брейкпоинт?
оно хоть рисует? перерисовывает?

ЗЫ перерисовка в цикле - не самый правильный вариант использования ресурсов
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #9
Переписал код заново и он заработал.
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #10
может, надо было просто перекомпилить?
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #11
перерисовка в цикле - не самый правильный вариант использования ресурсов

Честно говоря, я не знаю других подходов для игр и приложений с динамичной графикой, где постоянно требуется обновление изображения.

Тем более, sleep(20) в обработчике потока честно стоит.
 
  • 🔴 03:38 Повітряна тривога в Харків.обл.
  • #12
может, надо было просто перекомпилить?

Дорогой ,Влад, неужели можно так холодно говорить ,являясь свидетелем такого дурного отображения боломути.
Как хорошо,что все это не видит старейшина Михалыч.
 
Назад
Зверху Знизу