Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос наверное к профи. (timer) (http://www.flasher.ru/forum/showthread.php?t=99255)

sourcer21 01.08.2007 02:00

Вопрос наверное к профи. (timer)
 
Вот простенький скрипт который создает интервал в 10мс... но как видите что интервал то больше то меньше. Есть варианты как сделать более точныйинтервал? Нужна максимальная точность :(

Код:

var prevTime : Number = 0;
var timer = new Timer(10); // ms
timer.addEventListener("timer", timeHandler);
timer.start();

function getTime ()
{
        var d = new Date();
        return d.getTime();
};
               
function timeHandler (event:TimerEvent)
{       
        var cur : Number = getTime();
        var dif : Number = cur - prevTime;
        trace(" current = "+cur+"  prev = "+prevTime+"  dif = "+dif);
        prevTime = cur;
};


Usnul 01.08.2007 02:13

есть, пользоваться getTimer() и ставить как можно меньше мусора в команду проверки. интервал никогда не был точен и никогда не будет, в хелпе все расписано, как он работает и почему имеено так а не иначе.

sourcer21 01.08.2007 02:20

Я порнимаю что он небыл точен, но кстати я невидел в хелпе ичто то немогу найти поповоду того почему он так работет а не как то подругому. Не поможешь найти это место в хелпе где написано? Ну хорошо а если мне нужны точные интервалы то что же тогда делать, неужели нет решения никакого? Просто это как бы простой пример если его немного усложнить разброс будет до 200мс ...

etc 01.08.2007 10:24

Цитата из хелпа:

Цитата:

Сообщение от Help
Depending on the SWF file's framerate or Flash Player's environment (available memory and other factors), Flash Player may dispatch events at slightly offset intervals. For example, if a SWF file is set to play at 10 frames per second [fps], which is 100 millisecond intervals, but your timer is set to fire an event at 80 milliseconds, Flash Player will fire the event close to the 100 millisecond interval. Memory-intensive scripts may also offset the events.


sourcer21 01.08.2007 11:27

Помогите пожалуйста.
Задача по сути элементарная.
Надо сделать тоже самое но чтобы точнее было.
тоесть блок кода который срабатывает каждые 10мс как бы вы это реализовали? помогите пожалуйста.
Я просто уже много что перепробоал ну никак.... реуальтат проде того
10мс
12мс
16мс
15мс
70мс
11мс
10мс
12мс

Тоесть даже 70 мс проскакивает часто хотя комп вобще не загружен.
Помогите пожалуйста, я прям в стопоре. :(

vooparker 01.08.2007 12:02

врядли такое удасться реализовать

sourcer21 01.08.2007 12:09

тоесть как я понимаю итог один. Задержки просто надо учитывать каким то образом и делать больше действий на такте с учетом задержки такта. Жопа конечно, но ладно. Но всётаки может еще у кого есть какие то идеи?

aksios 01.08.2007 12:13

Цитата:

Сообщение от sourcer21
Задача по сути элементарная.
Надо сделать тоже самое но чтобы точнее было.

Есть весы с делением 1г. Нужно на них взвесить с точностью до 1 мг. Намек понятен? Задача для флеша не элементарная. В плане изврата, можно кое что предпринять... но это сложно. По крайней мере, один албанец это пробовал решать.

etc 01.08.2007 12:55

10 мс — слишком маленький интервал, чтобы быть точным.

sourcer21 01.08.2007 13:00

Поймите что дело не в том что интервал маленький чтобы быть точным давайте зададим интервал 200мс и всёравно будеь 220, 230, 210, 200 и так далее тут просто проблема точности.
вот примеру если бы можно было реализовать следующую конструкцию то это работало но она не может сужествовать просто из за того что просто завесит комп

Код:

prev=getTimer();

while(1)
{
if((all=(getTimer()-prev))>=10)
{
trace(all);
prev=getTimer();
}
}

есть какие то идеи как придать жизнь такой конструкции?


Часовой пояс GMT +4, время: 05:51.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.