我需要一些准确的东西我可以插入方程式,如果你能提供帮助的话。你会如何应用下面的等式? 谢谢你们。
平均速度和位移
平均速度
V = X / T
位移
X = V * T
示例
我有30秒,一个170码的场地。我需要用什么平均速度让我的马在30秒内到达场地的尽头。我移动了小数位并得到了这个。
alt text http://www.ashcraftband.com/myspace/videodnd/VQ.jpg
这是我尝试的'返回值接近,但不够接近' FLA here
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秒内
NUMBERS
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);
答案 0 :(得分:1)
我认为你的问题是你认为通过时间=延迟*计数。事实并非如此。现代操作系统上的定时器不精确,这是因为许多线程同意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;
}