Показать сообщение отдельно
Старый 24.02.2018, 19:52
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от nelco Посмотреть сообщение
таймер до этого стоял... на 45мс, но он глючит (иногда быстрее-медленнее на момент становится), не совсем с одинаковыми промежутками срабатывает... видимо из-за того, что сильно часто. Поменял на EnterFrame - стало равномерно, но теперь не могу подогнать скорость до нужной по EnterFrame... получается, что отдельно у каждого DisplayObjecta нельзя менять скорость кадров?
45 это не слишком часто. У TimerEvent можно вызывать метод updateAfterEvent() в обработчике. Это вынудит флеш плеер перерисовать всю картинку по событию. Тогда все будет работать плавно
Код AS3:
private function onTimer(e:TimerEvent):void {
   e.updateAfterEvent();
}
Цитата:
Вообще завязываться на enterframe дурная практика т.к. в зависимости от нагрузки он может тикать сильно медленнее заявленного fps.
А ты бы какое решение предложил? Во флеше даже таймер зависит от FPS. Поток то один, никуда от этого не денешься.
Завязываться на EnterFrame это не дурная практика, а самая обычная, используемая везде. Единственное, что нужно усорвешенствовать обновление по EnterFrame и добавить замер длительности предыдущего кадра (delta time), и все расчеты производить с учетом этой величины
__________________
Ко мне можно и нужно обращаться на ты)