forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Программирование (http://forum.boolean.name/forumdisplay.php?f=54)
-   -   Обработка нажатий клавиш (http://forum.boolean.name/showthread.php?t=6271)

Phantom 22.08.2008 14:57

Обработка нажатий клавиш
 
Декомпилируем мидлетпаскалевский класс M.class
Это фрагмент:
PHP код:

public void keyPressed(int i){
   
KP KC i;
 }
 public 
void keyReleased(int i){
   
KP 0;
 } 

В переменной KP всегда хранится код нажатой клавиши. (Я читал про это. Считывание с клавиатуры происходит в отдельном потоке, который инициируется самой джавой.)
Вопрос такой. Как мне поступать, если я хочу обрабатывать клавиши ещё и в другом классе. Я, конечно, могу обращаться к переменной KP так: M.T.KP, но хотелось бы сделать так, чтобы класс был универсальный и его можно было бы использовать не только в этом частном случае. То есть мне нужно как-то в класс передать что-то типа указателя на эту переменную. Например, я создаю класс:
PHP код:

import javax.microedition.lcdui.*;

public class 
MyClass{
 public static 
void MyFunction(параметр_для_обработки_клавиш){
  . . .
  
Тут кодкоторый в цикле принимает значения нажатых клавиш и что-то с этим делает.
  . . .
 }


Какой "параметр_для_обработки_клавиш" мне передавать? Как правильно оформить?
Так-то мне в этот класс ещё нужно передать Canvas и Graphics, их я смог передать, но мне это тоже как-то не очень нравится. Можно что-нибудь сделать, наследование там какое-нибудь, чтобы проще всё стало?

P.S: Надеюсь, не слишком запутано объясняю =)

Phantom 22.08.2008 15:35

Ответ: Обработка нажатий клавиш
 
Сейчас подумал... Наверно, придётся сделать специальную процедуру в классе. А потом в M.class в keyPressed(int i) и keyReleased(int i) вписать её вызов... Таким образом в мой класс постоянно будет поступать информация о нажатии/отпускании клавиш. Что скажете?

Piligrim 22.08.2008 17:10

Ответ: Обработка нажатий клавиш
 
лоигчнее было бы написать класс наследник M, в котором метод выглядел бы примерно так:
void keyPressed(int c) {
super.keyPressed(c);
... твоя обработка клавиш
}
ну и естественно подменить им основной класс при выполнении программы, т.е. переменные I, T, G класса M,
тогда будут корректно работать все стандартные функции и ты получишь желаемое.

Phantom 22.08.2008 19:07

Ответ: Обработка нажатий клавиш
 
Не понимаю. Что значит класс-наследник? Написать копию M.class что ли? И все методы переопределить? О_о И зачем подменять? У меня основная программа будет идти в M, а в дополнительном классе просто типа функция будет (кусок кода, который кое-что делает), но этой функции нужен и канвас, и графикс, и клавиши обрабатывать... Вот говорят, что на ООП легче всё делать. Нифига. Или, например, ещё читал, что одно из преимуществ ООП в том, что можно абстрагироваться от устройства какого-то конкретного класса и юзать его в своём приложении, зная только его методы. Но у меня вышла вот такая забавная вещь. Есть классы g.class и b.class. В b.class я создаю переменную g. В итоге происходит путаница! Если я пытаюсь обратиться к переменной g, то компилятор пытается обратиться к g.class! И выдаёт ошибку. То есть, если я использую сторонний класс какой-нибудь, а в структуре моей программы есть класс, имя которого совпадёт с какой-нибудь переменной в стороннем классе, то тоже произойдёт путаница. Может я что-то не так делаю?

Piligrim 24.08.2008 23:02

Ответ: Обработка нажатий клавиш
 
зачем переписывать все методы? только те реакцию которых ты хочешь изменить.


Часовой пояс GMT +4, время: 15:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot