Flashhilfe.de - Flash Community

DeltaTime bei OnEnterFrame? [Flash 10]

 


AntwortenRegistrieren Seite1  

Rotblitz#1
Benutzerbild von Rotblitz
Beiträge: 46
Wohnort: Hamburg
Registriert: May 2009

01.07.2011, 23:37

Hi,
ich frage mich gerade beim programmieren eines Spiels, ob es sinnvoll ist für die Spieleschleife, onEnterFrame zu nutzen um jeden "Schleifendurchlauf" (dann ja nicht wirklich einer), also jeden Spiel-"Schritt" zu realisieren. Oftmals in anderen Sprachen, wird gerne eine Endlosschleife erzeugt, die dann die verstrichene Zeit seid dem letzten Spielschritt misst.
Aber macht so etwas überhaupt sinn wenn man eben mit onEnterFrame arbeiten möchte?

Also:

game() {
this.addEventListener(Event.ENTER_FRAME, gameLoop);
}

function gameloop() {
...
updateDiesUndDas();
...
}

Habt ihr dazu eine Meinung :) ?
vindel#2
Benutzerbild von vindelFlashhilfe.de Moderator
Beiträge: 3000
Wohnort: Köln
Registriert: Oct 2007

02.07.2011, 10:42

Hallo,

eine pauschale Antwort gibt es nicht, es kommt auf dein Spiel an.
Wenn ich zB ein Brettspiel erstelle hat der User einen Zug und muss dann auf den Computer warten. Da macht natürlich eine onEnterFrame Funktion nicht sinn, da sich ja Daten nur nach einem Zug ändern und dieser mittels (onRelease etc.) dokumentiert wird.
Wenn du allerdings ein Spiel mit ständig wechselnden Parametern hast (Rennspiel oder so) dann mach eine ständige Überprüfung sinn. Ob du jetzt eine onEnterFrame nimmst(zb. 32mal pro sekunden) oder ein Interval (> 100 mal pro sekunde) ist jedem selbst überlassen, wobei mit dem Interval halt jede Zeit angenommen werden kann.
public Weltformel(Problem){
      if (Problem gelöst) return Lösung;
      else Weltformel(kleiners Problem);
}
joe brockerhoff#3
Benutzerbild von joe brockerhoff
Beiträge: 98
Wohnort: meerbusch
Registriert: Dec 2002

02.07.2011, 11:24

Nur um die Zeit zu messen erfüllt ein jeweiliger Abgleich über das *:Date Object die Zeitmessung.
world wide wars -> world wide wisdom
www.brockerhoff.com
Rotblitz#4
Benutzerbild von Rotblitz
Beiträge: 46
Wohnort: Hamburg
Registriert: May 2009

Themenautor/in

02.07.2011, 13:10

Hmm, das ist einleuchtend, jedoch geht es mir ja um die Frage, ob bei jedem Durchlauf auch die selbe Zeit verstrichen ist. Das heißt:
Nach jedem Intervall, bewegt sich der player eine Einheit nach rechts (z.B. player.x += 1). Wenn nun ein User mit einem langsameren Rechner das Spiel startet und nebenbei noch ordentlich viel andere Prozesse am laufen hat, ändert sich dadurch das Spiel inhaltlich?
Aus diesem Zwecke gibt es ja oftmals die Delta-Time-Messung um zu erkennen wie lang der letzte Schritt her ist.

Ich glaub es is bei mir hier nur ein Verständnisproblem...
joe brockerhoff#5
Benutzerbild von joe brockerhoff
Beiträge: 98
Wohnort: meerbusch
Registriert: Dec 2002

02.07.2011, 13:27

Ah ja, da würde ich mal mit dem Timer Objekt rangehen.
Beispiel: http://www.hansen-world.de/blog/animationen-mit-dem-timer-objekt-in-as-3
Das ist stabiler als der Framedurchlauf im Player.
world wide wars -> world wide wisdom
www.brockerhoff.com
Geändert von joe brockerhoff am 02.07.11 um 13:28 Uhr
Rotblitz#6
Benutzerbild von Rotblitz
Beiträge: 46
Wohnort: Hamburg
Registriert: May 2009

Themenautor/in

02.07.2011, 13:51

Ja schon recht, aber ist denn nun die Problematik wie ich sie oben geschildert habe auch bei der onEnterFrame-Methode  gegeben?
joe brockerhoff#7
Benutzerbild von joe brockerhoff
Beiträge: 98
Wohnort: meerbusch
Registriert: Dec 2002

02.07.2011, 13:59

Deine Überlegung kann ich nicht nachvollziehen - wo liegt das Problem? Wenn Du Werte permanent abfragen möchtest, kannst Du doch ein Timer Konstrukt bauen oder setTimeout aus den Flash.utils nutzen - in AS2 gabs noch setInterval, aber dafür steht ja etz das Timer Object - ENTER-FRAME ist da ungenauer, wenns um Millisekunden geht.
world wide wars -> world wide wisdom
www.brockerhoff.com

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2020 Sebastian Wichmann - Flashhilfe.de