| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Dumm lebt länger Registriert seit: Jan 2004 Ort: Sachsen
Beiträge: 425
| Best Practise: Countdown
Hallo, also ich möchte nicht, dass ihr mir erklärt wie man einen Countdown macht. Ich möchte nur wissen, in welcher Weise man ihn am genauesten erstellen kann. Mal angenommen ich habe eine Zeit von 300 Sekunden. Mit setIntervall und einem Wert von 1000 besteht am Ende eine Zeitdifferenz von 3-10 Sekunden. Das müsste daher kommen, da setIntervall an die FrameRate gebunden ist. Und wenns auch nur etwas ruckelt wirds Brühe. Also fällt onEnterFrame auch raus. Eine weitere Idee wäre setIntervall in Verbindung mit der Systemzeit. Eine Funktion prüft bei jedem Aufruf, ob sich die Systemzeit verändert hat und, falls dies der Fall ist, zieht sie dem Countdown eine Sekunde ab. Der Wert von setIntervall muss natürlich entsprechend klein sein. Diese Variante lässt zwar keine falschen Zeiten zu (wie im ersten Beispiel) jedoch lassen sich hier bei genauerem hinsehen unterschiedliche Intervalle beim Countdown beobachten - sie sind gering aber erkennbar. Habt ihr also eine "ultimative" Lösung für das Problem?
__________________ Blog |
| | |
| | #2 (permalink) |
| nerdig working Registriert seit: Jul 2001 Ort: Hamburg
Beiträge: 5.832
|
hmm leichte ungenauigkeiten lassen sich in flash kaum umgehen, sonst würde es mehr gute flash-drumcomputer geben ![]() wenn du in der funktion die von setInterval aufgerufen wird, ein updateAfterEvent() machst, läuft das unabhängiger von der framerate, aber immernoch nicht genau. je höher die framerate, desto genauer der interval denke ich. es heißt pro framewechsel können bis zu 10 intervalle ausgeführt werden. wie klein ist den die kleinste zeiteinheit die du brauchst? onSoundComplete könnte auch noch gehen, mit einem stummen sound von exakter länge, da gibts zwar auch eine ungenauigkeit von 46,irgendwas millisekunden, aber die lässt sich vererrechnen.
__________________ beat it | shake it | fish it | just pudding | love-o-meter flashforum sidebar installieren |
| | |
| | #3 (permalink) |
| Dumm lebt länger Registriert seit: Jan 2004 Ort: Sachsen
Beiträge: 425
|
Die Lösung mit updateAfterEvent() klingt gut. In Verbindung mit einer Überprüfung der Systemzeit sollte das schon ziemlich genau werden. Einen extra Sound möchte ich dafür nicht einbauen - im Moment zählt jedes Byte Aber eine Genauigkeit von 50 Millisekunden würde mich schon zufrieden stellen. Ich denke mal, dass das menschliche Auge diese Differenz nicht bemerken würde... Edit: FrameRate liegt bei 24 FPS
__________________ Blog Geändert von Vampire's Party (23-12-2005 um 23:14 Uhr) |
| | |
| | #4 (permalink) |
| Zurückgekehrt Registriert seit: Nov 2005 Ort: Berlin
Beiträge: 84
|
klingt theoretisch sehr spannend nur würde das Noobs eher helfen, das Ganze mal in Form von AS Code zu sehen. Gruss
__________________ Grüße aus Berlin. PS: Wenn ihr Problematiken zu Actionscript mit PHP habt, bitte involviert mich. Da interessiert mich alles. |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Jul 2001 Ort: Berlin | Friedrichshain
Beiträge: 3.561
|
ich habs letztens mit getTimer() gemacht. die 'original'/'init'-zeit und die zielzeit kommen vom server, und dann wird jedem oEF / interval die differenz (getTimer()) abgezogen.. so lässt sich ohne 'kriminelle energie' relativ wenig manipulieren. gruss
__________________ 8bm | join ff@BOINC formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn |
| | |
| | #7 (permalink) |
| Dumm lebt länger Registriert seit: Jan 2004 Ort: Sachsen
Beiträge: 425
|
Die Zeiten kommen auch bei mir vom Server. Die Systemuhr würde ich nur benutzen um festzustellen, ob sich der Sekundenwert verändert hat.. dürfte also nicht manipulierbar sein, wenn man die Systemuhr nicht anhalten kann.
__________________ Blog |
| | |
| | #8 (permalink) |
| Neuer User Registriert seit: Jul 2001 Ort: Berlin | Friedrichshain
Beiträge: 3.561
|
die systemzeit anhalten ? wie meinst das ? um manipulationen 'zu erschweren' must du schon versuchen unabhängig von der client-zeit zu rechnen...
__________________ 8bm | join ff@BOINC formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn |
| | |
| | #9 (permalink) |
| o_0 Registriert seit: Apr 2005 Ort: zuhause
Beiträge: 79
|
Ich hab das Problem mit getTimer() gelöst - ist (glaube ich) am genauesten. also zB: PHP-Code:
__________________ Ich war traurig weil ich keine Schuhe hatte, bis ich einen sah, der keine Füße hatte Geändert von DoTheSinWave (24-12-2005 um 10:07 Uhr) |
| | |
| | #10 (permalink) | |
| Dumm lebt länger Registriert seit: Jan 2004 Ort: Sachsen
Beiträge: 425
| Zitat:
@DoTheSinWave: Auch bei dir ist der Countdown abhängig von der FrameRate... siehe oben
__________________ Blog | |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Jul 2001 Ort: Berlin | Friedrichshain
Beiträge: 3.561
|
denke schon, wir sprechen vom gleichen, drückens nur anders aus.. mit getTimer() machst du ja genau dass..
__________________ 8bm | join ff@BOINC formpackage.org | audiohunter.de | problematica.de | 8ball-media.de/blog | taikonauten.cn |
| | |
| | #13 (permalink) |
| Dumm lebt länger Registriert seit: Jan 2004 Ort: Sachsen
Beiträge: 425
|
So: etwas verspätet mein Ergebnis (habs wider Erwarten erst jetzt gebraucht): PHP-Code: Kleines Problem: die Überprüfung funktioniert erst ab der zweiten Sekunde. Ein wenig unschön. Weiß jemand eine Lösung? Grüße, Vampire's Party
__________________ Blog |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |