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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Цифровые кнопки GameCanvas 
:(
    Опции темы
fare
Дата 7.11.2007, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Столкнулся с проблемой!!! Нужно вводить с клавиатуры числа с 0-9, но не понял как это реализовать в GameCanvas!! Помогите плиз очень надо!! Просто в Canvas есть KEY_NUM0-KEY_NUM9, а здесь??? smile 
PM MAIL ICQ   Вверх
W0LF
Дата 7.11.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Он же наследуется от Canvas, а в Canvas есть getKeyCode()


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
fare
Дата 7.11.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



т.е мне надо сделать так:
Код

protected void keyPressed(int keyCode)
{
int act=getKeyCode(gameAction)
     switch(act)
     {
     case Canvas.KEY_NUM0:
     действие
     break;
     default:
     break;
     }
}

если так то куда это засунуть в метод run?
Или как сделать что бы каждый цикл он ждал нажатия кнопки с 0-9 и выполнял действие в зависимости от нажатой кнопки


Это сообщение отредактировал(а) fare - 7.11.2007, 20:22
PM MAIL ICQ   Вверх
W0LF
Дата 8.11.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Да, наверно я фигню написал. getKeyStates() возвращает все нажатые клавиши
Цитата

getKeyStates() which will return all the keys pressed

Так что надо просто подобрать константы к этим кнопкам. Тут надо поискать. но keyStates вернет все нажатое


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
fare
Дата 8.11.2007, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



да спасибо, возвращает, но теперь другая проблема, на моей nokia 6630 кнопки 1, 3 и 0 возвращают одно и тоже значение! Т.е. ему нет разници какую кнопку я нажимаю, он все равно возвращает значение 0! Как быть в этой ситуации??
PM MAIL ICQ   Вверх
eugine_s
Дата 25.11.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(fare @  8.11.2007,  20:08 Найти цитируемый пост)
Как быть в этой ситуации?? 


Если тема еще актуальна, то попробуй вместо
setFullScreenMode(true);
использовать 
setFullScreenMode(false); 
PM MAIL   Вверх
shomer
Дата 25.11.2007, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



setFullScreenMode(true);
setFullScreenMode(false);
 
Проблемы не решает smile 
Для себя эту проблему в GameCanvas решил совместным использованием keyPressed  и getKeyStates - ловит все клавиши, немного криво правда но для пользования пойдет ( не всегда).
Проверял на Sjboy и Toshibe.
Код

    public int Key;
    public int prev_kst;

    public Demo( Display display)
    {
        super( true);
        disp = display;
        setFullScreenMode( true);
        width  = this.getWidth();
        height = this.getHeight();
       
    }
    
    public void start()
    {
        ...
        Thread t = new Thread( this);
        t.start();
    }
    public void run()
    {
        Graphics g = getGraphics();
        while( f_run)
        {
            DrawScreen(g);
            try{ Thread.sleep(0);}
            catch (Exception ex) {};
        }
        
    }

    public void DrawScreen( Graphics g)
    {
        int k = getKeyStates();
        ...
        KeyAction( k);
        flushGraphics();
        ...
    }
    
    public void KeyAction( int key_st)
    {
        if ( Key == 0)
            if ( key_st != prev_kst)    // отсечение повторов по getKeyStates(), кривое - но работает
                Key = key_st;
        switch ( Key)
        { 
            case -1:
            case 2:
            case 50:
                list.DecSelItem();
                break;
            case -2:
            case 56:
            case 64:
                list.IncSelItem();
                break;
            case -3:
            case 4:
            case 52:
                menu.DecSelItem();
                break;
            case -4:
            case 32:
            case 54:
                menu.IncSelItem();
                break;
            case -5:
            case 53:
            case 256:
                ind.SetCount( 0);
                break;
        }
        Key = 0;
        prev_kst = key_st;
    } 

    protected void keyPressed( int keyCode) 
    {
        Key = keyCode;
    }


При setFullScreenMode( false) нет полного экрана

Добавлено через 2 минуты и 7 секунд
Вот довесок

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  dist.rar 10,78 Kb
PM MAIL   Вверх
eugine_s
Дата 26.11.2007, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Прощу прощения, ошибся!
 smile 

Конечно, не setFullScreenMode()

а в конструкторе класса (который extends GameCanvas) использовать super(false);

Код


public class MyCanvas extends GameCanvas
{

public MyCanvas()
{
     super(false);
}

}



P.S. У меня в конструкторе эти два метода идут друг за другом, поэтому перепутал smile.
PM MAIL   Вверх
shomer
Дата 26.11.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



protected GameCanvas(boolean suppressKeyEvents)
Parameters:
suppressKeyEvents - true to suppress the regular key event mechanism for game keys, otherwise false

eugine_sу - респект.
-----------------------------------
Однако надо и в документацию иногда заглядывать.. ( это я про себя)

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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