средняя скорость, as3 - PullRequest
2 голосов
/ 02 июня 2010

Мне нужно что-то точное, я могу подключить уравнения, если вы можете помочь. Как бы вы применили приведенное ниже уравнение? Спасибо, ребята.

СРЕДНЯЯ СКОРОСТЬ И СМЕЩЕНИЕ
средняя скорость
V = Х / Т

смещение
х = у * Т

подробнее


пример

У меня есть 30 секунд и поле в 170 ярдов. На какую среднюю скорость мне понадобится моя лошадь, чтобы достичь конца поля за 30 секунд. Я переместил десятичные разряды вокруг и получил это.

альтернативный текст http://www.ashcraftband.com/myspace/videodnd/VQ.jpg

Вот что я попробовал 'возвращаемое значение близко, но недостаточно близко'
FLA здесь

var TIMER:int = 10;
var T:int = 0;
var V:int = 5.6;
var X:int = 0;
var Xf:int = 17000/10*2;
var timer:Timer = new Timer(TIMER,Xf);  
timer.addEventListener(TimerEvent.TIMER, incrementCounter); 
timer.start();  
function formatCount(i:int):String {
var fraction:int = Math.abs(i % 100);
var whole:int = Math.abs(i / 100); 
return ("0000000" + whole).substr(-7, 7) + "." + (fraction < 10 ? "0" + fraction : fraction);
}
function incrementCounter(event:TimerEvent) { 
T++; 
X = Math.abs(V*T);
text.text = formatCount(X);
}

Тесты

TARGET
5,6 ярдов * 30 секунд = 168 ярдов

INTEGERS
135,00 за 30 секунд

Math.Round
135,00 за 30 секунд

ЧИСЛО
140,00 за 30 секунд

таймер управления «Я проверял это и часы на моем столе»

var timetest:Timer = new Timer(1000,30);
var Dplus:int = 17000;
timetest.addEventListener(TimerEvent.TIMER, cow);
timetest.start();
function cow(evt:TimerEvent):void {
tx.text = String("30 SECONDS: " + timetest.currentCount);
if(timetest.currentCount> Dplus){
timetest.stop();
}
}

//far as I got...couldn't get delta to work...
T = (V*timer.currentCount);
X += Math.round(T);

1 Ответ

1 голос
/ 02 июня 2010

я думаю, что ваша проблема в том, что вы полагаете, что прошедшее время = задержка * считается. Это неправда. Таймеры в современных ОС не точны, это потому, что многие потоки совпадают для ЦП и время идет через фиксированные интервалы, это особенно заметно, если интервал таймера мал.

Так как же это? Вы должны взять фактические промежутки времени, которые произошли между двумя тиками таймера, что даст вам дельту времени. Тогда x += v*deltaT.

Пример:

function incrementCounter(event:TimerEvent) { 
   var now:int = new Date().getTime(); 
   X += Math.abs(V*(now - T));
   text.text = formatCount(X);
   T = now;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...