Flash 平均速度,as3

Flash 平均速度,as3,flash,actionscript-3,Flash,Actionscript 3,如果你能帮我的话,我需要一些精确的公式。你将如何应用下面的方程式? 谢谢各位 平均速度和位移 平均速度 V=X/T 位移 x=v*T 示例 我有30秒和170码的场地。我需要我的马以多大的平均速度在30秒内到达终点。我移动了小数点,得到了这个 以下是我尝试的内容“返回值很接近,但不够接近” 我认为你的问题在于你认为过去的时间=延迟*计数。事实并非如此。现代操作系统上的计时器并不精确,这是因为许多线程同时使用CPU,时间以固定的间隔出现,如果计时器间隔很小,这一点尤其明显 那么,如何解决

如果你能帮我的话,我需要一些精确的公式。你将如何应用下面的方程式? 谢谢各位

平均速度和位移
平均速度
V=X/T

位移
x=v*T


示例

我有30秒和170码的场地。我需要我的马以多大的平均速度在30秒内到达终点。我移动了小数点,得到了这个

以下是我尝试的内容“返回值很接近,但不够接近”



我认为你的问题在于你认为过去的时间=延迟*计数。事实并非如此。现代操作系统上的计时器并不精确,这是因为许多线程同时使用CPU,时间以固定的间隔出现,如果计时器间隔很小,这一点尤其明显

那么,如何解决这个问题呢?您应该获取两个计时器滴答声之间发生的实际时间跨度,这将为您提供时间增量。然后
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;
}

我该如何将其应用到我的代码中,我明白你的意思。准确度好,但速度不好。我根据你的想法做了一个测试计数器。
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);
function incrementCounter(event:TimerEvent) { 
   var now:int = new Date().getTime(); 
   X += Math.abs(V*(now - T));
   text.text = formatCount(X);
   T = now;
}