![]() |
Ответ: Получение команд в формах
Ну это я там уже лишнего наворотил в попытках заставить всё это работать. Проблемы так таковые две:
1) У меня commandAction вообще не вызывался, пока я не перенёс его в главный класс мидлета. Вот где тут связь - вообще не представляю. 2) А обрабатывать нажатие клавиш мне надо в основном цикле программы, а не в отдельном методе, поэтому я и получаю нажатые команды в переменную, а после их сравниваю. По мне, так в данном случае это оптимальный вариант. |
Ответ: Получение команд в формах
1. Такое чувство, что просто переменную забыли проинициализировать, вот и не вызывается.
2. В яве нет понятия основной цикл программы, как и в Дельфи. Это событийная среда. Ну да дело ваше. |
Ответ: Получение команд в формах
Ну вот не могу я въехать в ООП... :'(
|
Ответ: Получение команд в формах
Цитата:
|
Ответ: Получение команд в формах
Ладно, буду исправляться. =)
- - - Только вот понять не могу. Ну вот есть классы в программе. Каждый класс представляет свой тип данных, которым можно крутить вертеть при помощи методов, объявленных внутри. Но ведь по-любому сама программа не может выполняться путём цепочки методов, где первый метод вызывает второй, тот вызывает третий и так далее. Должна быть основная часть программы, которая всем этим рулить будет. В интернете сколько читал про ООП, ничего про это не видел. Везде только и пишут, что в ООП классы надо представлять как ящики, о внутренностях которых ничего не известно, но из него торчат проводки (методы), которыми он может взаимодействовать с другими ящиками. То есть получается, что у меня есть куча ящиков, но нет распределительного пульта управления. По мне так это то же самое, если бы я в процедурном языке написал кучу функций, но не имел возможности написать основную часть программы, которая будет вызывать эти функции. - - - Растолкуйте плиз. |
Ответ: Получение команд в формах
А ещё такй вопрос. А если создать в программе два класса implements CommandListener, то что будет? Они оба будут на команды одновременно реагировать? Или вообще не скомпилируется такая программа?
|
Ответ: Получение команд в формах
Цитата:
|
Ответ: Получение команд в формах
CommandListener может быть сколько угодно, активным, т.е. тем которому передаются команды, считается тот, который установлен с помощью setCommandListener объекта на экране.
Зачем нужен условнобесконечный цикл если система всё делает сама. Зачем ждать в нём результата ввода в TextBox если мы в обязательно попадём в commandAction? Обрабатываем в нём рекцию и всё! Система сама будет ждать следующую команду или просто клавишу если это Canvas. Программа завершится только если вызвать destroyApp(true); notifyDestroyed(); Напишу пример, чуть позже. |
Ответ: Получение команд в формах
Цитата:
pilgrim, + 1000000!!! |
Ответ: Получение команд в формах
Так, а это, какие ещё события есть в J2me? Нажатие/отпускание клавиш в канвасе, нажатие команд в формах, startApp, pauseApp, destroyApp... Что ещё такое полезное есть?
|
Ответ: Получение команд в формах
Ещё вот что интересное заметил. Ведь если в классе есть метод, который называется также, как и сам класс, то он автоматически вызывается при инициализации (ну или как правильно сказать) класса? Я вот сколько смотрел примеров создания простого приложения про это ничего сказано не было. Везде пишут, что первым вызывается startApp(). А вот фиг. Я проверил экспериментально. Если в классе есть метод с таким же названием, как и сам класс, то при запуске мидлета сначала вызывается он, а потом уже startApp(). У меня такой вопрос: этот метод будет вызываться только при первом запуске приложения или всегда перед startApp()? Если только при первом запуске приложения, то почему нигде не написано, что туда можно вынести код инициализации приложения? Почему пишут, что его надо в startApp() засовывать с проверкой не инициилизирован ли до сей поры ещё мидлет? Хотя с другой стороны, если, например главный класс имеет название a.class, и я в другом классе сделаю экземпляр (или это назвается объект-наследник?) этого класса:
PHP код:
PHP код:
|
Ответ: Получение команд в формах
Цитата:
Допустим есть класс PHP код:
PHP код:
|
Ответ: Получение команд в формах
Ну я это и имел ввиду! Но почему же везде пишут, что код инициализации главного класса надо в startApp() засовывать? Примерно так:
PHP код:
|
Ответ: Получение команд в формах
Ещё вот не понимаю логики. В мидлет паскалевских классах.
1) Зачем создаётся объект Image размером в экран телефона? 2) Почему потом через этот Image получается Graphics при помощи getGraphics()? 3) Почему метод paint() в классе, который extends Canvas, отрисовывает этот Image на дисплей? 4) И при каких условиях вызывается paint? Я так понимаю, что в этот Image размером с экран телефона отрисовывается всё, что я рисую на канвасе (текст, изображения, фигуры всякие), а при вызове repaint вызывается paint (где-то я читал, что он иногда может вызваться не сразу после вызова repaint, а когда ему будет хватать процессорных ресурсов, если запущенно много потоков, например), который как раз отрисовывает на экране телефона этот Image, в который мы до этого рисовали. Поправте, плиз, если я что-то не так говорю =) То есть я могу даже создать несколько таких картинок, создать для каждой свой Graphics и в каждый по очереди нарисовать что-то? А как потом подсунуть нужный Graphics в paint? Или нельзя держать одновременно несколько Graphics'ов в памяти? Блин, если всё, что я написал выше, не полная чушь, то я кажется начинаю глобально вникать в тему! =) |
Ответ: Получение команд в формах
Я ради теста создал два имэджа размером с экран мобилы, создал два графикса, отрисовал в каждый разные картинки. Вызываю repaint после отрисовки первого и после второго. Второй не отрисовывается, только первый. В paint в качестве параметра передаётся какой-то Графикс. Как система решает какой из них передать?
- - - Чуть позже: Ой блин, жёстко ступил. Я в обоих случаях в paint отрисовывал первый Image =) А какой там Графикс - это по ходу вообще не важно, paint ведь сразу на экран телефона рисует, верно? То есть это, как я понимаю, Графикс самого экрана видимо. Верно? |
Часовой пояс GMT +4, время: 14:28. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot