2010-06-02 3 views
2

J'ai besoin de quelque chose de précis Je peux brancher des équations si vous pouvez aider. Comment appliqueriez-vous l'équation ci-dessous? Merci les gars.vitesse moyenne, as3

MOYEN ET DEPLACEMENT
VELOCITY vitesse moyenne
V = X/T

déplacement
x = v * T

more info


exemple

J'ai 30 secondes et un champ de 170 verges. Quelle vitesse moyenne aurais-je besoin de mon cheval pour atteindre la fin du terrain en 30 secondes? J'ai déplacé les décimales autour et j'ai compris.

alt text http://www.ashcraftband.com/myspace/videodnd/VQ.jpg

Voici ce que j'ai essayé la valeur de retour est proche, mais pas assez près »
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); 
} 

essais

CIBLES
5. 6yards * = 30 secondes 168yards

entiers
135,00 en 30 secondes

Math.Round
135,00 en 30 secondes

NUMÉROS
140,00 en 30 secondes

contrôle timer 'J'ai testé avec thi s et l'horloge sur mon bureau »

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); 

Répondre

1

Je pense que votre problème est que vous croyez que le temps passé = retard * comptage. Ce n'est pas vrai. Les temporisateurs sur les systèmes d'exploitation modernes ne sont pas précis, car de nombreux threads concourent pour le processeur et le temps vient à intervalles fixes, ceci est particulièrement visible si l'intervalle de temporisation est petit.

Alors, comment ça? Vous devriez prendre des intervalles de temps réels qui se sont produits entre deux ticks de minuterie, ce qui vous donnera le delta de temps. Puis x += v*deltaT.

Exemple:

function incrementCounter(event:TimerEvent) { 
    var now:int = new Date().getTime(); 
    X += Math.abs(V*(now - T)); 
    text.text = formatCount(X); 
    T = now; 
} 
+0

comment pourrais-je appliquer à mon code, je comprends ce que vous dites. –

+0

@VideoDnd: vérifiez l'édition – Andrey

+0

pour la précision, mais pas pour la vélocité. J'ai fait un compteur de test basé sur votre idée. –