|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Цитата:
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
логгируйте позицию и время, рисуйте график в екселе, быстрее, чем болтать же =)
Последовательность Event.RENDER/Event.TIMER гляньте ещё может.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Получается, они постоянно флуктурируют в диапазоне нескольких десятков мс? Потому что "дёргания" не эпизодические, а постоянные. Это оказалось нетривиальным для меня.
Плюс, т.к. фпс 50 и дискомфорт в восприятии ощутим, получается, мы зрительно воспринимаем задержки в соответствующем временном диапазоне Добавлено через 2 минуты -De-, т.к. проблема имеет решение (юзать ENTER_FRAME), она переходит из статуса срочной в статус интересующей |
|
|||||
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
|
У таймера, есть зависимость от фпс
Еще в ас1, Колин Мук описывал это. Таким образом, если время между кадрами и время таймера у вас заданы одинаково, то из-за того, что таймер может вызываться с опаздыванием (см. абзац ниже), то, у вас часто таймер будет реально срабатывать только после смены очередного кадра. В этой же теме, но выше, я приводил пример того, как меняется эта зависимость от фпс. На сколько актуален сейчас этот момент, я не знаю. Если вы хотите более точно выводить данные через таймер, то фпс надо сделать больше, чем время таймера, а в самом таймере сделать корректировку изменения координат относительно абсолютного времени, а не полагаться на время между вызовами таймера. Последний раз редактировалось iNils; 13.07.2011 в 17:46. |
|
|||||
Цитата:
Добавлено через 39 минут Пример: package { import flash.display.Graphics; import flash.display.Sprite; import flash.display.StageScaleMode; import flash.display.StageAlign; import flash.events.Event; import flash.geom.Point; import flash.utils.setInterval; [SWF (width = 100, height = 100, frameRate = 25)] public class Main extends Sprite { private var _spr:Sprite; private var vec:Point = new Point(); public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; _spr = new Sprite(); draw(_spr.graphics); _spr.x = 50; _spr.y = 50; addChild(_spr); setInterval(intervalCallback, 40); addEventListener(Event.ENTER_FRAME, enterFrameHandler); } private function enterFrameHandler(e:Event):void { _spr.x += vec.x; _spr.y += vec.y; trace("enter frame"); } private function intervalCallback():void { vec.x = Math.round(Math.random() * 2 - 1); vec.y = Math.round(Math.random() * 2 - 1); trace("interval"); } private function draw(g:Graphics):void { g.beginFill(0); g.drawCircle(0, 0, 10); g.endFill(); } } } enter frame interval enter frame enter frame interval enter frame interval enter frame interval enter frame interval enter frame enter frame interval enter frame interval enter frame enter frame interval enter frame enter frame interval enter frame Цитата:
__________________
משיח לא בא משיח גם לא מטלפן Последний раз редактировалось iNils; 13.07.2011 в 17:46. |
Часовой пояс GMT +4, время: 21:18. |
|
« Предыдущая тема | Следующая тема » |
|
|