Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> KeyPressed, не работает 
V
    Опции темы
DEMOVERSION
  Дата 6.3.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



Скажите пожалуйста как решить следущую проблемы:
1) есть клас походит от GameCanas
2) надо ловить нажимание клавиш
3) делал через getKeyStates() - не ловит боковые кнопкиб KEY_SOFTKEY1(Nokia)
4) делал через keyPressed() - не ловит кнопки LEFT,UP.....FIRE

Каким образом можно перехвачивать все нажатия на клавиатуре телефона?

Спасибо за быстрые ответы!
PM MAIL   Вверх
Dancer
Дата 6.3.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



А вот так?

Код

    public void keyPressed( int keyCode) {

System.out.println("KeyCode = " + keyCode);

    int action = getGameAction(keyCode);

System.out.println("GameActionCode = " + action);

    switch (action) {
    case LEFT:

        break;

    case RIGHT:
        break;

    case UP:
        break;

    case DOWN:
        break;
...
    case 0:
// There is no game action. Use keypad constants instead
        switch(keyCode) {
            case Canvas.KEY_NUM2:
                  break;
...
        }
        break;
    }

    repaint();
    }



Это сообщение отредактировал(а) Dancer - 6.3.2006, 20:12


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
DEMOVERSION
Дата 6.3.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



Не работает smile

Всеравно не ловит кнопки UP,LEFT.....


Код

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;

public class SelectBetWindow extends GameCanvas{
    public static final String NAME = "SELECTBETWINDOW";
    private Sprite bgSprite;
    private LayerManager layerManager;
    private GameWindow gw;
    private Thread windowThread;
    private Graphics graphics;
    private Sprite betSprite;
    
    public SelectBetWindow(boolean arg0,GameWindow parent) {
        super(arg0);
        setFullScreenMode(true);
        gw = parent;
        graphics = getGraphics();
        betSprite = new Sprite(gw.betSelectionSprite);
        layerManager = new LayerManager();
        bgSprite = gw.getSprite("/bg.png",0,0,false);
        layerManager.append(bgSprite);

    }

    protected void keyPressed(int keyCode) {
        
        System.out.println("KeyCode = " + keyCode);

        int action = getGameAction(keyCode);

    System.out.println("GameActionCode = " + action);

        switch (action) {
        case LEFT:

            break;

        case RIGHT:
            break;

        case UP:
            break;

        case DOWN:
            break;
        case 0:
         //         There is no game action. Use keypad constants instead
                switch(keyCode) {
                    case Canvas.KEY_NUM2:
                          break;
                }
                break;
            }

        //gw.hideMenu();
    }
    
    private void draw() {
        //layerManager.paint(graphics,0,0);
        for(int i=0;i<5;i++) {
            betSprite.setFrame(i);
            betSprite.setPosition(10,10 + i * 25);
            betSprite.paint(graphics);
        }
        
    }
    public void paint(Graphics arg0) {
        draw();
    }
    
}

PM MAIL   Вверх
redrick
Дата 7.3.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 547
Регистрация: 7.1.2004
Где: Москва

Репутация: 1
Всего: 5



приведи код мидлета тоже - подозреваю ты забыл передать false коструктору

Код

protected GameCanvas(boolean suppressKeyEvents)

    Creates a new instance of a GameCanvas. A new buffer is also created for the GameCanvas and is initially filled with white pixels.

    If the developer only needs to query key status using the getKeyStates method, the regular key event mechanism can be suppressed for game keys while this GameCanvas is shown. If not needed by the application, the suppression of key events may improve performance by eliminating unnecessary system calls to keyPressed, keyRepeated and keyReleased methods.

    If requested, key event suppression for a given GameCanvas is started when it is shown (i.e. when showNotify is called) and stopped when it is hidden (i.e. when hideNotify is called). Since the showing and hiding of screens is serialized with the event queue, this arrangement ensures that the suppression effects only those key events intended for the corresponding GameCanvas. Thus, if key events are being generated while another screen is still shown, those key events will continue to be queued and dispatched until that screen is hidden and the GameCanvas has replaced it.

    Note that key events can be suppressed only for the defined game keys (UP, DOWN, FIRE, etc.); key events are always generated for all other keys.

    Parameters:
        suppressKeyEvents - true to suppress the regular key event mechanism for game keys, otherwise false.


вот это у меня работает :

Код

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.Display;

public class TestMIDlet extends MIDlet {

    protected void startApp() throws MIDletStateChangeException {
        TestGameCanvas tgc = new TestGameCanvas(false);
        Display.getDisplay(this).setCurrent(tgc);
    }

    protected void pauseApp() {

    }

    protected void destroyApp(boolean b) throws MIDletStateChangeException {
        notifyDestroyed();
    }
}


Код

public class TestGameCanvas extends GameCanvas {
    public TestGameCanvas(boolean b) {
        super(b);
    }

    protected void keyPressed(int keyCode) {
        System.out.println("KeyCode = " + keyCode);
        int action = getGameAction(keyCode);
        System.out.println("GameActionCode = " + action);
        switch(action) {
            case LEFT:
                break;
            case RIGHT:
                break;
            case UP:
                break;
            case DOWN:
                break;
            case 0:
                //         There is no game action. Use keypad constants instead
                switch(keyCode) {
                    case Canvas.KEY_NUM2:
                        break;
                }
                break;
        }
    }
}



--------------------
Имею Мнение Хрен Оспоришь   
PM MAIL ICQ   Вверх
DEMOVERSION
Дата 7.3.2006, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 105
Регистрация: 18.10.2005

Репутация: нет
Всего: 1



Спасибо,
это я ошибся когда конструктору передавал true
Tnx
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.1409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.