26.02.2014 / 08:56 |  | 
Freddy    Пользователь  
   Сейчас: Offline 
 Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
   | Magatino,  public class MyCanvas extends Canvas implements Runnable{  
...  
    private final static long ONE_FRAME_TIME = 1000 / 25; //время для одного кадра в милисекундах, из расчёта, что нам необходимо показать 25 кадров в секунду  
   
    public void run() {  
        long timeStart, timeDelta; //здесь будет хранится время, затраченное на одну итерацию игрового цикла  
        while(gameNotFinished()) {  
            timeStart = System.currentTimeMillis();  
            //логика игры  
            ...  
            repaint();  
            timeDelta = System.currentTimeMillis() - timeStart;  
            if (timeDelta < ONE_FRAME_TIME) {  
                try {  
                    Thread.sleep(ONE_FRAME_TIME - timeDelta);  
                }  
                catch(InterruptedException ex) {  
                    ex.printStackTrace();  
                }  
            }  
        }  
    }  
}  
 Значение ONE_FRAME_TIME подбирать ручками в процессе тестирования, я только пример дал.  Изменено Freddy (26.02 / 08:57) (всего 2 раза) | 
  26.02.2014 / 11:17 |  | 
Magatino    Администратор  
   Сейчас: Offline 
 Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
   | samodelkin (26.02.2014/05:54) Magatino, чтобы анимация на всех устровах была плавной, используй игровую канву(GameCanvas) из пакета javax.microedition.lcdui.gameЗначит при Canvas анимация коряво себя ведёт , а при GameCanvas анимация на всех устройствах идёт плавно , ну ты мля самый знаешь кто     | 
  26.02.2014 / 12:56 |  | 
samodelkin    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
   | Класс javax.microedition.lcdui.game.GameCanvas отличается от своего суперкласса javax.microedition.lcdui.Canvas двумя вещами: буферизацией графики и способностью возвращать состояния клавиш. Буферизация графики позволяет создавать все графические объекты вне экрана, а затем переносить их на экран все сразу. Это делает анимацию более плавной и устраняет эффект мигания. Источник:  http://www.mobilab.ru/articles/18/ | 
  26.02.2014 / 13:14 |  | 
Magatino    Администратор  
   Сейчас: Offline 
 Имя: Alexandr Откуда: Где Ленин родился. Simbirsk City Регистрация: 28.01.2011
   | samodelkin (26.02.2014/12:56) Класс javax.microedition.lcdui.game.GameCanvas отличается от своего суперкласса javax.microedition.lcdui.Canvas двумя вещами: буферизацией графики и способностью возвращать состояния клавиш.БуферизациДа вы сударь упорот! Анимация не будет на всех устройствах одинакова , для этого как минимум нужен ограничитель кадров , а что ты там используешь Canvas или GameCanvas особой разницы не имеет     | 
  26.02.2014 / 14:19 |  | 
samodelkin    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
   | Magatino, чтобы сделать на всех устройствах одинаковое количество кадров в секунду, надо знать время, затрачиваемое на один проход игрового цикла, легче всего сделай класс секундомера, в котором сделай метод старта, метод окончания секундомера и метод,возвращающий затраченное время, после чего в главном потоке игры вначале цикла запускай секундомер, а в конце останавливай, а паузу делай с учетом потраченного времени, сейчас выложу класс секундомера, написанного мной.
   | 
  26.02.2014 / 14:21 |  | 
samodelkin    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
   | Класс секундомера.
  
 Прикрепленные файлы:   Stopwatch.java   (1.03 кб.) Скачано 900 раз   | 
  26.02.2014 / 15:51 |  | 
aNNiMON    Супервизор 
   Сейчас: Offline 
 Имя: Витёк Регистрация: 11.01.2010
   | samodelkin, "public class Stopwatch extends Object" ну ё-моё(((
  __________________
   let live  Изменено aNNiMON (26.02 / 15:51) (всего 2 раза) | 
  26.02.2014 / 17:18 |  | 
samodelkin    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
   | aNNiMON, а почему нельзя от обьекта наследовать, ведь секундомер- это обьект.
   | 
  26.02.2014 / 17:22 |  | 
Freddy    Пользователь  
   Сейчас: Offline 
 Имя: Игорь Откуда: Воронеж Регистрация: 30.01.2010
   | samodelkin, любой класс неявно наследуется от Object, писать это в коде не нужно.
   | 
  26.02.2014 / 17:25 |  | 
samodelkin    Пользователь  
   Сейчас: Offline 
 Имя: Сергей Откуда: Липецк Регистрация: 05.11.2013
   | Freddy, ааа, ясно, спасибо!
   |