Zurück   Flashforum > Flash > ActionScript > ActionScript 2

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 12-04-2011, 16:43   #1 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Countdown auf Datum mit tagen, stunden, minuten, sekunden

Es ist zum Verzweifeln. Ich habe einen Countdown installiert, der auf ein bestimmtes Datum runterzählen soll. Und Flash rechnet einfach 30 Tage zuviel. Ich habe drei Scripts ausprobiert. Bei allen dasselbe Problem. Wenn ich einfach 30 Tage abziehen kann und dann sicher sein, dass er sauber runterzählt wäre alles super. Aber ich habe keinen Schimmer WIESO Flash sich um die 30 Tage verrechnet. Hier eines der 3 Scripte:

Code:
then = new Date(2011,4,13,9,0,0);
onEnterFrame = function(){
now = new Date(); 
days = (then-now)/1000/60/60/24; 
daysRound = Math.floor(days); 
hours = (then-now)/1000/60/60-(24*daysRound); 
hoursRound = Math.floor(hours); 
minutes = (then-now)/1000/60-(24*60*daysRound)-(60*hoursRound); 
minutesRound = Math.floor(minutes); 
seconds = (then-now)/1000-(24*60*60*daysRound)-(60*60*hoursRound)-(60*minutesRound); 
secondsRound = Math.round(seconds); 

if (daysRound < 10) {
	daysRound = "0"+daysRound
}

if (hoursRound < 10) {
	hoursRound = "0"+hoursRound
}

if (minutesRound < 10) {
	minutesRound = "0"+minutesRound
}

if (secondsRound < 10) {
	secondsRound = "0"+secondsRound
}

countdown = daysRound+":"+hoursRound+":"+minutesRound+":"+secondsRound;

}
Hat jemand eine Idee?
zeroval ist offline   Mit Zitat antworten
Alt 12-04-2011, 17:10   #2 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Ja, Flash zählt die Monate von 0 bis 11 nicht von 1 bis 12.
__________________
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!
Martin Kraft ist offline   Mit Zitat antworten
Alt 12-04-2011, 17:22   #3 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Ja, Flash zählt die Monate von 0 bis 11 nicht von 1 bis 12.
Hmm. Danke erst mal. Ist mir aber nicht ganz klar, wo ich jetzt diesen Monat abziehen muss. Ich kann ja nicht einfach das then-Datum einen Monat runternehmen, oder?

Ich kann ja auch nicht einfach 30 Tage abzählen, da manche Monate ja nicht genau 30 Tage zählen.

Wie ausgleichen?
zeroval ist offline   Mit Zitat antworten
Alt 12-04-2011, 17:24   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von zeroval Beitrag anzeigen
Ich kann ja nicht einfach das then-Datum einen Monat runternehmen, oder?
Wieso nicht?
__________________
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!
Martin Kraft ist offline   Mit Zitat antworten
Alt 12-04-2011, 17:30   #5 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Wieso nicht?
Nagut, dann bau ich das mal so und hoffe in 4 Monaten kommt es gut.

Danke und Gruss, Zero
zeroval ist offline   Mit Zitat antworten
Alt 13-04-2011, 10:33   #6 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Jetzt zeigt er mir einen Tag zuwenig an. Muss wohl wohl mit der variierenden Anzahl Tag in verschiedenen Monaten zu tun haben.

Wieso funktionieren denn bloss alle 3 Scripte gleichwohl nicht. Da müsste doch bereits kompensiert geworden sein?
zeroval ist offline   Mit Zitat antworten
Alt 13-04-2011, 10:49   #7 (permalink)
Fohlen-Power
 
Benutzerbild von enky
 
Registriert seit: Mar 2007
Beiträge: 1.223
Vll bin ich noch nicht ganz wach, aber deine Sekunden zeigen mir sowohl 60 als auch 00 an. Das wäre pro Minute eine Sekunde zuviel, pro Stunde eine Minute zuviele, pro Tag 24min, auf 29 Tage 696min, also 11,6 Stunden.
__________________
Vielen Dank für euer Verständnis für einen Flash Noob !!!
enky ist offline   Mit Zitat antworten
Alt 13-04-2011, 10:52   #8 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Zitat:
Zitat von enky Beitrag anzeigen
Vll bin ich noch nicht ganz wach, aber deine Sekunden zeigen mir sowohl 60 als auch 00 an.
Echt? woran siehst Du denn das?
zeroval ist offline   Mit Zitat antworten
Alt 13-04-2011, 10:56   #9 (permalink)
Fohlen-Power
 
Benutzerbild von enky
 
Registriert seit: Mar 2007
Beiträge: 1.223
Mhh ich hab dein Script genommen und getestet. Die variable countdown einfach in ein textfeld ausgegeben und dann tickt das so runter bei mir


29:21:04:00
29:21:03:60
29:21:03:00

Wenn ich meine DigitalUhr trauen darf müsste das so runtergehen

29:21:04:00
29:21:03:59
29:21:03:00
__________________
Vielen Dank für euer Verständnis für einen Flash Noob !!!
enky ist offline   Mit Zitat antworten
Alt 13-04-2011, 11:53   #10 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Ich hab Dir den Code mal etwas entrümpelt und sortiert:
PHP-Code:
function generateFactors():Array {
    var 
a:Array = [3652460601000];
    var 
b:Array = [];
    var 
f:Number 1;
    for(var 
a.length 1>= 0i--){
        
b[i] = f;
        
*= a[i];
    }
    return 
b;
};

function 
leadingZeros(n:Number):String{
    var 
str String(n);
    while(
str.length 2str "0" str;
    return 
str;
}

function 
countItDown(){
    var 
d:Number then - new Date();
    
    if(
d<=0){
        
countdown "finished";
        
clearInterval(intervalId);
    } else {    
        var 
time:Array = [];
        var 
t:Number;
        
        for(var 
i=0factors.length-1i++){
            
Math.floorfactors[i] );
            
time.pushleadingZeros(t) );
            
-= factors[i];
        }
        
countdown time.join(":")
    }
    
    
trace(countdown);
}

var 
countdown:String;
var 
then:Date = new Date(2011313165250);
var 
factors:Array = generateFactors();
var 
intervalId:Number setInterval(countItDown1000); 
__________________
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!
Martin Kraft ist offline   Mit Zitat antworten
Alt 15-04-2011, 07:49   #11 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Martin, Du bist der Beste. Der Ansatz mit dem interval anstatt dem onEnterFrame hat's natürlich gebracht.

Vielen Dank, allen, die mitgeholfen haben!
zeroval ist offline   Mit Zitat antworten
Alt 10-10-2011, 08:17   #12 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 2
Wie kann ich die Ausgabe einrichten:
"Noch xxx Monate, xxx Tage, xxx Stunden" usw. ??
hermaennchen49 ist offline   Mit Zitat antworten
Alt 10-10-2011, 08:34   #13 (permalink)
i ate pixels
 
Benutzerbild von pixelslave
 
Registriert seit: Mar 2004
Ort: Augsburg
Beiträge: 524
Zitat:
Zitat von hermaennchen49 Beitrag anzeigen
Wie kann ich die Ausgabe einrichten:
"Noch xxx Monate, xxx Tage, xxx Stunden" usw. ??
Bitte etwas präzieser - eine Ausgabe in Flash bzw. ActionScript kann man nicht einfach so machen...

Wo soll deine Ausgabe stattfinden?
Ansonsten ist das einfach eine Zusammensetzung div. String-Elemente.

ActionScript:
  1. var months_left:String = calc.toString() // calc -> berechnung der verbleibenden Monate mit einem numerischen Rückgabewert
  2. var days_left:String = calc.toString() // calc -> berechnung der verbleibenden Tage mit einem numerischen Rückgabewert
  3. var hourss_left:String = calc.toString() // calc -> berechnung der verbleibenden Stunden mit einem numerischen Rückgabewert
  4. var str:String = "Noch " + months_left + " Monate, "  + days_left + " Tage, " + hours_left + " Stunden";

Martin
pixelslave ist offline   Mit Zitat antworten
Alt 10-10-2011, 08:39   #14 (permalink)
Durchschnitt
 
Registriert seit: Jul 2004
Beiträge: 89
Zitat:
Zitat von hermaennchen49 Beitrag anzeigen
Wie kann ich die Ausgabe einrichten:
"Noch xxx Monate, xxx Tage, xxx Stunden" usw. ??
countdown = "Noch "+daysRound+" Tage, "+hoursRound+" Stunden, "+minutesRound+" Minuten, "+secondsRound+" Sekunden";
zeroval ist offline   Mit Zitat antworten
Alt 10-10-2011, 15:12   #15 (permalink)
Neuer User
 
Registriert seit: Mar 2011
Beiträge: 2
Zitat:
Zitat von pixelslave Beitrag anzeigen
Bitte etwas präzieser - eine Ausgabe in Flash bzw. ActionScript kann man nicht einfach so machen...

Wo soll deine Ausgabe stattfinden?
Ansonsten ist das einfach eine Zusammensetzung div. String-Elemente.

Martin
Es sollte die Ausgabe in mehreren dynamischen Textfeldern (jeweils für Monate, für Tage usw.) erfolgen.
hermaennchen49 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
Minuten in Stunden in HH:MM:SS cyberholic Flash MX 3 04-03-2006 15:19
Datenberechnungen, Addition von Stunden, Minuten und Sekunden rahel Flash MX 2004 3 19-04-2005 12:39
Heute Datum X, in Y Tagen ist Datum Z arnold85 Flash MX 2004 1 17-11-2004 17:45
sekunden zu stunden:minuten:sekunden fusi Flash MX 2 03-09-2004 13:31
Countdown minuten, sekunden (Punkte abzug) sven_voecking Flash 4 und Flash 5 2 22-03-2004 11:48


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele