Вниз  Микростатьи и хитрости Java
- 21.08.2010 / 18:30
LPzhelud
  Пользователь

LPzhelud 
Сейчас: Offline
aNNiMON, однако мы предпологаем, что числа настолько большие не будут использоваться)
__________________
 Эль Презеденте
- 24.08.2010 / 20:38
dejqitz
  Пользователь

dejqitz 
Сейчас: Offline
Описание классов, методов и интерфейсов J2ME в понятной форме.

* Если есть опечатки, неточности, а также если вы хотите расширить данное пособие, то пишите мне в личку.


Прикрепленные файлы:
api.zip (179.03 кб.) Скачано 375 раз
- 26.08.2010 / 14:20
P@bloid
  Пользователь

P@bloid 
Сейчас: Offline
Очень часто в различных приложениях возникают проблемы с кодировкой. Чаще всего причина этого - использование InputStream/OutputStream.
Чтобы избежать этих проблем, можно использовать классы InputStreamReader/OutputStreamWriter.
Используются они следующим образом:
  1. InputStream input=connection.openInputStream();/*допустим это наш InputStream,
  2. если считывать данные через него, то возникнут "кракозябры"
  3. исправляется так:
  4. */
  5. InputStreamReader reader=new InputStreamReader(input,"UTF-8");//вместо UTF-8 можно подставить другую кодировку, поддерживаемую телефоном
C OutputStreamWriter поступать по аналогии

Изменено P@bloid (26.08 / 14:22) (всего 2 раза)
- 22.09.2010 / 23:10
Zvers
  Пользователь

Zvers 
Сейчас: Offline
При создании игр необходимо учитывать некоторые правила :
1. Само собой двойная буфферизация.
2. Нежелательно каждую прокрутку цикла объявлять объекты, т.к. игра может тормозить.
3. Экономить память. Обнулять объекты и массивы.

Изменено aNNiMON (25.09 / 08:31) (всего 1 раз)
- 10.10.2010 / 12:08
manifest_mf
  Пользователь

manifest_mf 
Сейчас: Offline
При создании игр нам чаще всего необходимо реализовывать управление персонажем или каким-либо другим спрайтом. А при использовании средств GameAPI могут возникнуть проблемы с обработкой клавишных событий при помощи метода getKeyStates(). Всё дело в том, что getKeyStates() не всегда возвращает код нажатой клавиши, а возвращает 0. В таком случае можно использовать один способ с использованием методов нажатия клавиш и отпускания. Это keyPressed() и keyReleased().
Создаем глобальную булевую переменную для того, чтобы проверить, нажата клавиша или отпущена и создаем глобальную переменную для getGameAction(int).
  1. public boolean isPressed;
  2. public int gameAction;
Далее, в методе keyPressed() прописываем, что наша булевая переменная равна true, а в keyReleased() она будет становится false. И, также, инициализируем метод getGameAction(int) в каждом из этих методов.
  1. public void keyPressed(int keyCode) {
  2.  isPressed = true;
  3.  gameAction = getGameAction(keyCode);
  4. }
  5.  
  6. public void keyReleased(int keyCode) {
  7.  isPressed = false;
  8.  gameAction = getGameAction(keyCode);
  9. }
  10.  
  11. public void input() { // и создаем свой отдельный метод для обработки клавишных событий
  12. if ((isPressed) & (gameAction == UP)) {
  13. // а здесь пишем действие,
  14. // которое будет выполняться
  15. // при удержании
  16. // кнопки "вверх" на джойстике
  17.  }
  18. }
Теперь остается метод input() объявить или в главном цикле программы, или в главном классе, в методе startApp(), или в другом нужном вам месте.
(C) manifest_mf
- 21.10.2010 / 13:16
Kiq
  Пользователь

Kiq 
Чтобы получить офигенную графику в 3d, используйте setFiltering(Texture2D.FILTER_LINEAR,Texture2D.FILTER_LINEAR);
- 3.01.2011 / 20:33
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Online
Написал класс, для универсальной работы с акселерометром.
Как известно, в акселерометрах есть три типа получения данных (int, double и Object). Целые в телефонах Sony Ericsson, вещественные на эмуляторе SE и телефонах Nokia, а последние на практике нигде не встречаются.
Также, некоторые акселерометры не поддерживают трёхмерной обработки координат, всё это тоже учтено.
В представляемом классе, не зависимо от типа данных, возвращаемые значения будут от -1024 до 1024 (при желании можно легко поменять на свой диапазон в методе getValue(Object o)).
Исходник закоментирован - проблем не должно возникнуть :)
__________________
 let live

Изменено aNNiMON (3.01 / 20:34) (всего 1 раз)


Прикрепленные файлы:
AccelUtil.java (4.23 кб.) Скачано 1587 раз
- 25.01.2011 / 17:36
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Online
Метода подсчета FPS (by dzanis)
  1. static long FPS, FPS_Count, FPS_Start;
  2. static String getFPS() {
  3.     FPS_Count ++;
  4.     if (FPS_Start == 0)
  5.         FPS_Start = System.currentTimeMillis();
  6.     if (System.currentTimeMillis() - FPS_Start >= 1000) {
  7.         FPS = FPS_Count;
  8.         FPS_Count = 0;
  9.         FPS_Start = System.currentTimeMillis();
  10.     }
  11.     return Long.toString(FPS);
  12. }
перед методом repaint();
просто пишем
  1. g.setColor(0xFF0000);
  2. g.drawString(getFPS(), 0, 0, 20);

__________________
 let live

Изменено aNNiMON (25.01 / 17:38) (всего 2 раза)
- 25.01.2011 / 18:23
dzanis
  Пользователь

dzanis 
Сейчас: Offline
метод подсчёта FPS (by aNNiMON) :)
  1. static long fps, time, prevtime, delta, framecount;
  2.   static String getFPS() {
  3.  
  4.         time = System.currentTimeMillis();
  5.         delta = time - prevtime;
  6.         framecount++;
  7.    if (delta >= 1000) {
  8.             fps = framecount * 1000 / delta;
  9.             prevtime = time;
  10.             framecount = 0;
  11.    }
  12.    return Long.toString(fps);
  13. }
Перед
  1. repaint();
или
  1. flushGraphics();
вписать
  1. g.setColor(0xFF0000);
  2. g.drawString(getFPS(), 0, 0, 20);


Изменено dzanis (25.01 / 18:26) (всего 1 раз)
- 4.02.2011 / 10:17
Zvers
  Пользователь

Zvers 
Сейчас: Offline
при записи g.drawString(getFPS(), x, y, anchor) при каждом проходе paint'а будет выделяться память для строки getFPS(). Чтобы избежать этого, необходимо записать getFPS() в строку, а после вывода на экран обнулить её. В этом случае память не будет расходоваться "на ветер", но при этом FPS слегка упадёт.
Наверх  Всего сообщений: 84
Фильтровать сообщения
Поиск по теме
Файлы топика (6)