Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-01-2012, 16:16   #1 (permalink)
Fohlen-Power
 
Benutzerbild von enky
 
Registriert seit: Mar 2007
Beiträge: 1.223
Timer Aufrufe - Genauigkeit

Hi,

ich habe hier einen Countdown Timer welchen ich mit Timer betreibe und auf 1000ms eingestellt ist. So genau ist es in der Realität ja nicht sonder man hat immer mal wieder Abweichungen.

So jetzt habe ich mir die Anweichung immer in einer Variablen gespeichert. Abstände über 1000ms addiere ich in die Variable, Abstände unter 1000ms ziehe der Ungenauigkeit wieder ab. Wenn ich die 1000ms überschritten habe in der Abweichung, addiere die 1000ms meiner aktuellen zeit.

Nun meine Frage. Kann/darf man so machen oder gibt es vll noch andere vorgehensweisen für dieses problem?

Hier der Code das man es sich vll etwas besser vorstellen kann.

PHP-Code:
var anv:Number getTimer()-start
start 
getTimer();
    
//Abweichung überprüfen 
if(anv>1000){
   
abweichung abweichung+ (anv-1000)
}else if(
anv<1000){
   
abweichung abweichung- (1000-anv)
}

//Wenn Abweichung über 1000, weitere Sekunde addieren, ansonsten 1 Sekunde addieren
//1000 von abweichung abziehen
if(abweichung>1000){
   
abweichung-=1000;
   
parsMe Date.parse(now) + 2000;
}else{
   
parsMe Date.parse(now) + 1000;

__________________
Vielen Dank für euer Verständnis für einen Flash Noob !!!

Geändert von enky (30-01-2012 um 16:35 Uhr)
enky ist offline   Mit Zitat antworten
Alt 30-01-2012, 16:43   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Deinen Code versteh ich nicht
  • Wann wird dieser Code aufgerufen? Was ist now?
  • Wozu soll das ganze überhaupt gut sein?
  • Wieso arbeitest Du nicht einfach mit getTimer() oder der Date-Klasse, wenn Du die genaue Zeit brauchst?!
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (30-01-2012 um 16:45 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Alt 30-01-2012, 16:55   #3 (permalink)
Fohlen-Power
 
Benutzerbild von enky
 
Registriert seit: Mar 2007
Beiträge: 1.223
Wann wird dieser Code aufgerufen? Was ist now?

PHP-Code:
function startCount (xPos:NumberyPos:NumbertColor:Number){
....

countdownTimer.addEventListener(TimerEvent.TIMERupdateTime);
    
countdownTimer.start();
    
start getTimer();

PHP-Code:
function updateTime(e:TimerEvent):void {

    var 
anv:Number getTimer()-start
    start 
getTimer();
    
    
    if(
anv>1000){
        
abweichung abweichung+ (anv-1000)
    }else if(
anv<1000){
        
abweichung abweichung- (1000-anv)
    }
    
    
    
    if(
abweichung>1000){
        
abweichung-=1000;
        
parsMe Date.parse(now) + 2000;
    }else{
        
parsMe Date.parse(now) + 1000;
    }
    
    
    
now = new Date(parsMe);

    
parsMe2 Date.parse(endDate);
    
endDate = new Date(parsMe2);


    var 
timeLeft:Number endDate.getTime() - now.getTime();

    var 
seconds:Number Math.floor(timeLeft 1000);
    var 
minutes:Number Math.floor(seconds 60);
    var 
hours:Number Math.floor(minutes 60);
    var 
days:Number Math.floor(hours 24);

    
seconds %=  60;
    
minutes %=  60;
    
hours %=  24;

    var 
sec:String seconds.toString();
    var 
min:String minutes.toString();
    var 
hrs:String hours.toString();
    var 
d:String days.toString();

    
//Sekunden darstellen
    
if (sec.length 2) {
        
sec "0" sec;
    }

    if (
seconds 0) {
        
sec "00";
    }

    
//minuten darstellen
    
if (min.length 2) {
        
min "0" min;
    }

    if (
minutes 0) {
        
min "00";
    }


    
//Stunden darstellen


    
if (hrs.length 2) {
        
hrs "0" hrs;
    }

    if (
hours 0) {
        
hrs "00";
    }

    
//day darstellen


    
if (d.length 2) {
        
"0" d;
    }


    if (
days 0) {
        
"0";
    }

    var 
time:String;
    if (
days 2) {
        
time " Tag  " hrs ":" min ":" sec;
    } else {
        
time " Tage  " hrs ":" min ":" sec;
    }


    
countText.text "Countdown: " time;

Was ist now?
PHP-Code:
Now ist ein Zeitstring den ich mir vom Server ziehe in dem Format 2/27/2012 

Wozu soll das ganze überhaupt gut sein?
PHP-Code:
Ich habe hier einen Countdown Timer
Ich ziehe mir beim Aufruf die aktuelle Zeit vom Server und 
hole mir aus einer xml liste 
die endzeit auf die der Countdown 
zählen soll
Der Countdown soll sich im Sekundentakt aktualiseren
Dafür habe ich Timer verwendet mit 1000msDoch die Aufrufe finden
ja nicht im 1000ms Sekundentakt vor
sondern weichen immer etwas ab
Wieso arbeitest Du nicht einfach mit getTimer() oder der Date-Klasse
PHP-Code:
Da ich nicht mit der Systemzeit arbeiten kannda der User ja so "schummeln" könnte
Serverzeit gilt für alle gleichDiese ziehe ich mir am Anfang einmal und addiere da immer eine Sekunde drauf 
__________________
Vielen Dank für euer Verständnis für einen Flash Noob !!!
enky ist offline   Mit Zitat antworten
Alt 30-01-2012, 17:08   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von enky Beitrag anzeigen
Wieso arbeitest Du nicht einfach mit getTimer() oder der Date-Klasse
PHP-Code:
Da ich nicht mit der Systemzeit arbeiten kannda der User ja so "schummeln" könnte
Serverzeit gilt für alle gleichDiese ziehe ich mir am Anfang einmal und addiere da immer eine Sekunde drauf 
Das funktioniert doch auch mit getTimer():
  • Zieh Dir die Zeit vom Server.
  • Berechne die Differenz zu getTimer.
  • Dann kannst jeder Zeit diese Differnz zu getTimer addieren und hast die Serverzeit.*

Vorausgesetzt natürlich der Nutzer stellt sein System nicht nach dem ServerSync um. Dieses Problem gäbe es aber bei Deiner Methode auch und es liese sich durch einen entsprechenden Plausibilitätstest verhindern.

100% sicher ist das eh nie - auch die Antwort der Servers lässt sich ja fälschen.
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (30-01-2012 um 17:17 Uhr)
Martin Kraft ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
pixel-Genauigkeit algro Flash CS5 Professional 2 20-07-2011 13:26
Countdown Genauigkeit Matthieu Flash 8 10 20-04-2007 17:04
Genauigkeit bei Gleitkommazahlen mod.alex Flash MX 2004 3 07-08-2005 13:42
Genauigkeit von lineStyle hugeinc ActionScript 1 5 21-02-2004 12:36
getTimer()-Genauigkeit makore ActionScript 1 5 26-06-2003 12:42


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:34 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele