Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > JavaME timing


Автор: Супермен 27.8.2006, 11:59
Я не понял как в мидлете узнать точное время, прошедшее с определенного момента. Например, в каждом кадре человечек должен быть смещен на расстояние, зависящее от заданной скорости и прошедшего времени спустя последнего кадра. На разных телефонах - разная производительность, поэтому мне нужно что-то вроде:

drawFrame () {
...
 dxTime = getTime() - time;
 moveCharacter(speed * dxTime);
 time = getTime();
...
}

Подскажите...

Автор: Samuil 28.8.2006, 00:33
А что использовал для интервалов времени? Thread?

Автор: 604 28.8.2006, 08:49
System.currentTimeMillis();

Автор: Samuil 28.8.2006, 12:33
Надо так:
Thread thr=new Thread(this);
thr.start();
В методе run(){
try{
Thread.sleep(временой интервал в милисеках);
}catch(Exception e){}
}
И на всех телефонах будет все одинаково
Если этого мало то читай в документации smile 

Автор: 604 28.8.2006, 19:03
Samuil, Врятли будет одинаково.
Поскольку трубки рисуют с разной скоростью, время выполнения одной итерации цикла будет разным.
Лучше так.
Код

public void run()
  {
    long startTime;

    while(true)
    {
      startTime = System.currentTimeMillis();
    
      draw();

      try
      {
        Thread.sleep(Math.max(0, (startTime + "Задержка в миллисек.") - System.currentTimeMillis()));
      }
      catch (Exception e)
      {}
    }
  }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)