![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
valerchi, ты уж извини за прямоту, но этот код - ужасный.
Лучше отложи куда-нибудь подальше этот код и начни с "чистого листа". Возьми какой-нибудь пример хороший. Ошибки: 1. Никаких тяжелых действий в startApp(). Можно с этим много "горя" получить в будущем. 2. Зачем 19-ть (или 18-ть) раз выполнять вот такое: // получить ссылку на менеджер дисплея d = Display.getDisplay(this); // создать объект графика Ggraph graph = new Ggraph(); 3. Зачем: // вывести график на экран d.setCurrent(graph); достаточно один раз сделать такое, а потом graph.repaint(); (возможно graph.serviceRepaint() перед repaint() вызвать) 4. g.fillRect(255, 255, 255, 255); - это какой ты прямоугольник зарисовываешь? 5. (Основное) Где картинки загруженные в массив? Они ведь в у тебя опять перед отрисовкой загружаются. |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Почитай вот тут много полезный статей про j2me
По твоему вопросу там есть * Пишем игру для телефона. (Части 1 - 6) |
|||
|
||||
valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Спасибо, вроде всё нормально.
Смотри, что у меня получилось. И самое главное - работает на эмуляторе и на телефоне. Теперь, хотелось бы добавить команду "Back", чтобы программу можнобыло "запустить в обратную сторону". Как это можно сделать?
|
|||
|
||||
Dummy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 7 Всего: 19 |
||||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Все равно в startApp куча всего осталось - плохая манера. Вот, переделал немного + добавил в два направления анимация
|
|||
|
||||
Dummy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 7 Всего: 19 |
По большому счету, подход с вычитыванием картинок в конструкторе вряд ли лучше.
Тяжеловесность startApp() крайне нежелательна, согласен, т. к. при долгом startApp() у AMS элементарно может возникнуть желание прибить повисший (по ее мнению) в функции-триггере мидлет. Но. В случае, если мы в startApp() схлопочем RuntimeException, по крайней мере будет вызван destroyApp() для нашего мидлета, так что мы сможем обработать эту ситуацию. Скорее всего, смерть мидлета предотвратить мы не сможем (MIDP гласит, что в таком случае мидлет должен быть терминирован). Но, как минимум, закроем ту часть ресурсов, которую мы успешно захватили до получения Exception в startApp(), и покажем предсмертное сообщение пользователю . В случае же, когда мы получаем проблемы в конструкторе, обработка исключительной ситуации целиком отдается на откуп AMS. Она, конечно, может покажет более-менее содержательное сообщение, в конечном итоге даже освободит ресурсы, захваченные нами и не освобожденные. Но ситуация получится намного более брутальная и рискованная. В этом примере такого не получится - просто стартуем без картинок (что само по себе не очень хорошо, но для такого быстрого примера вполне нормально). Но в общем случае - сами понимаете... Поэтому, видимо, лучшим решением будет запуск в startApp() отдельного потока приложения, внутри которого будут и картинки из джара выниматься, и все отрисовки вызываться. |
|||
|
||||
valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Дело в том, что ты меня не совсем понял. Я хотел сделать так, чтобы нажал кнопку - глаз открылся, и так открытым остался. Потом нажал другую кнопку, - программа пошла в другую сторону, то есть глаз закрылся, а у тебя получается бесконечный цикл, - тое сть глаз всё время моргает.
|
|||
|
||||
eugine_s |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Дело в том, что:
1. Из того что ты написал было не понятно что ты хотел получить 2. Из того что я написал, очень просто получается, то что тебе нужно, нужно то изменить 3-4 строчки кода. Вот это
Изменить на вот это:
Т.е. изменения заключаются только в том, чтобы не начинать цикл анимации с самого начала (конца). Конечно, можно улучшить программу: какие-то флаги выставлять, чтобы анимацию не выполняло, чтобы лучше работало.... но уже можешь сам над улучшениями поработать. Да, кстати, то что написал Dummy по поводу инициализации картинок НЕ в конструкторе - правильное и если бы я писал для себя, то так и сделал бы (+ возможно добавил бы метод, который освобождал все эти ресурсы). |
||||
|
|||||
valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Большое спасибо. Всё работает.
А можно добавить какую-то надпись вверху, типа бегущей строки? Или сюда невозможно добавить? |
|||
|
||||
valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Вообще, посоветуйте какую- нибудь литературу по j2me программированию.
Я пользуюсь самоучителем Буткевича. |
|||
|
||||
Dummy |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 7 Всего: 19 |
См. документацию по Displayable.setTicker(). Ticker - это и есть бегущая строка. Уж не знаю, где она появится - сверху или снизу, - зависит от реализации. В принципе, если надо строго вверху, свою реализацию написать тоже не сложно. По аналогии с анимацией злосчастного глаза))) |
|||
|
||||
valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Сделал так. На эмуляторе строка идёт, а на телефоне - нет.
Телефон у меня SonyEricsson w810i. Вчём может быть проблемма?
|
|||
|
||||
valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Шустрый, объясни в чём причина?
Бегущая строка на эмуляторе идёт, а на телефоне - нет. |
|||
|
||||
valerchi |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 163 Регистрация: 27.5.2008 Где: Геническ Репутация: нет Всего: нет |
Загрузил этот код в SonyEricsson K790i, там бегущая строка видна. И получилась другая проблемма:
картинка уменьшилась и показывается не в середине экрана, а в левом верхнем углу. Не знаете, в чём может быть проблемма? Как её показать на всех телефонах по середине и не меняя размера? |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
||||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |