Zeitabhängige Position per Actionscript x(t)

dreamer2007

Mitglied
Hallo,

ich habe mal eine generelle Frage: Gibt es eine einfache Möglichkeit eine Position eines Objektes zeitabhängig zu ändern? Beispielsweise eine trigonometrische Beziehung für eine Kreisbewegung. Mit der jeweis aktuellen Zeit rumzuspielen ist zu rechenintesiv und verursacht immer Probleme.

Wie löst ihr dieses Problem? Und was benutzt man am besten als Zeitparameter t?

Gruß

Dreamer
 
Hi,

mir ist nicht ganz klar um was es Dir geht, aber vielleicht suchst Du etwas wie
Code:
getTimer();
Möglicherweise helfen Dir auch Intervalle (siehe "setInterval"-Methode) weiter.

Gruß
.
 
Hallo,

mit getTimer(); Hab ich so etwas auch schon probiert, allerdings gab es da große Probleme mit der Perfomance.

Also im Prinzip möchte ich die Position eines Objekts abhängig von einem zeitlichen Parameter verändern. Ein Beispiel wäre:

PHP:
var t = 'ein Parameter der sich mit der Zeit ändert'

mc._x = cos(t);
mc._y = sin(t);

Das ganze sollte aber kontinuierlich laufen, also in irgendeiner Schleife oder so?

Das wichtigste ist eigentlich die Art des Parameter. Einfach eine For-Schleife durchlaufen zu lassen gibt mir ja nicht die Möglichkeit eine sauber definierte Geschwindigkeit vorzugeben. GetTimer() hat immer Leistungseinbußen verursacht.


Gruß
 
GetTimer() hat immer Leistungseinbußen verursacht.
Das dürfte nicht das Problem sein, sondern eher die Art, wie Du die Bewegung/Änderung vornimmst: Eine for-Schleife ist z.B. dafür völlig ungeeignet, da deren Inhalt in einem einzigen Frame abgearbeitet wird.

So etwas:
Code:
this.onEnterFrame = function() {
  var t = getTimer();
  mc._x = Math.sin(t / 100) * 20;
  mc._y = Math.cos(t / 100) * 20;
}
dürfte eigentlich (eine entsprechend hohe Framerate vorausgesetzt) sehr flüssig laufen.

Eine framerate-unabhängige Variante wäre z.B. der Einsatz von setInterval zusammen mit updateAfterEvent:
Code:
var iv = setInterval(go, 10);

function go() {
  var t = getTimer();
  mc._x = Math.sin(t / 100) * 20;
  mc._y = Math.cos(t / 100) * 20;
  updateAfterEvent();
}

Gruß
.
 
Zurück