![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
danilsl |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
Всем доброго времени суток.
Вот код:
Результат работы checkMove полностью зависит от того отработает ли метод repaint(). Так вот, у меня чуть моск не закипел, пока я не обнаружил, что в цикле while repaint не отрабатывает! Он просто пропускается! В итоге у меня зависший мидлет. Объясните пожалуйста мне новичку почему это происходит |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Все правильно keyPressed вызывается системным потоком и всякие долгие операции в нем не должны выполняться. Поэтому, чтобы я посоветовал: 1) в keyPressed только запоминать нажатую кнопку и все. void keyPressed(int keyCode) { keyPressed = keyCode; } и все. А обрабатывать эту кнопку уже в другом потоке. Может что-нибудь в вот таком стиле:
2) repaint() - это только флаг "JVM, когда у тебя будет возможность перерисуй канвас". repaint - это не прямой вызов paint(Graphics g); Наверное ты это знаешь, так как используешь serviceRepaint(); 3) я бы советовал еще не привязывать модель и отрисовку (т.е. у тебя модель ничего не будет делать пока не будет произведена отрисовка). Точнее можно так делать, но таким образом как у тебя реализовано... так не покатит. |
|||
|
||||
danilsl |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 15.3.2006 Репутация: нет Всего: нет |
2,3)В общемто уже сам допёр. А serviceRepaints() после часа мучений нашёл в javadoc и воткнул.
Вообще хотел сделать, чтобы отрисовывался не весь экран, а только изменяемая часть. А потом свернул мидлет на телефоне... В общем теперь пошёл стандартным путём. Только вот тормозит теперь заметнее. Короче модель из paint() убрал польностью, в итоге отпала необходимость в serviceRepaints(). Правда без него и работает пошустрей. Только местами прям явно видно, что фрейм-другой жилит. |
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |