Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash MX

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-07-2007, 16:29   #1 (permalink)
Swiss Cowboy
 
Benutzerbild von HC-Flasher
 
Registriert seit: Feb 2006
Beiträge: 86
Flash Countdown mit PHP

Hallo zusammen,
Ich versuche gerade einen Flash Countdown zu entwickeln, der die Zeit des Servers und nicht die des Users verwendet.
- Das runterzählen der Zeit (Tage, Stunden, Minuten, Sekunden) sollen angezeigt werden
- Wenn der Countdown auf null oder schon darüber hinaus ist, soll in Flash ins Schlüsselbild „start“ gesprungen werden.
Soweit die Theorie

Als erstes habe ich mir eine PHP-Datei zusammen geschustert.
Hier wird die Serverzeit ausgelesen „ time()“ und mein Stichtag eingegeben „ mktime“. Danach übergebe ich diese Angaben als Zahlenkette (Unixformat) an Flash "aktuell=$serverzeit&ziel=$stichtag";
PHP-Code:
<?
// Serverzeit
// aktuelle Zeit im Unixformat erzeugen
$serverzeit time();
// Stichtag 10:00:00 Uhr – 17. Juli 2007
// Stunde, Minute, Sekunde, Monat, Tag, Jahr
$stichtag mktime(10,0,0,7,17,2007);

// Variabeln an Flash senden
echo "aktuell=$serverzeit&ziel=$stichtag";
?>
In der Flash Datei lade ich als erstes die beiden Angaben (Serverzeit und Stichtag).
Dann berechne ich die Differenz (Stichtag – Serverzeit) um mit diesem Wert zu arbeiten (Countdown).
Nun kommt die Umwandlung von Millisekunden in die einzelnen Datumskomponenten von Jahr bis Sekunde.
PHP-Code:
/////////////////////////////////////////////////////////////////////
/////////////// Daten aus der "zeit.php" auslesen ///////////////////
/////////////////////////////////////////////////////////////////////
var LoadVarObject = new LoadVars();
LoadVarObject.onLoad = function(loadSuccess) {
    if (
loadSuccess == true) {
        
_root.serverzeit this.aktuell;
        
_root.stichtag this.ziel;
        var 
serverzeit this.aktuell;
        var 
stichtag this.ziel;
    }
};
LoadVarObject.load("zeit.php");
/////////////////////////////////////////////////////////////////////
///////////////////////// Differenz bilden //////////////////////////
/////////////////////////////////////////////////////////////////////
_root.diff stichtag-serverzeit;
var 
diff stichtag-serverzeit;
var 
howlong "";
/////////////////////////////////////////////////////////////////////
// Umwandlung von Millisekunden in die einzelnen Datumskomponenten //
/////////////////////////////////////////////////////////////////////
var years = (diff-(diff%31557600000))/31557600000;
diff diff-(years*31557600000);
var 
months = (diff-(diff%2628000000))/2628000000;
diff diff-(months*2628000000);
var 
days = (diff-(diff%86400000))/86400000;
diff diff-(days*86400000);
var 
hours = (diff-(diff%3600000))/3600000;
diff diff-(hours*3600000);
var 
minutes = (diff-(diff%60000))/60000;
diff diff-(minutes*60000);
var 
seconds = (diff-(diff%1000))/1000;
/////////////////////////////////////////////////////////////////////
////////////////////// Komponenten formatieren //////////////////////
/////////////////////////////////////////////////////////////////////
if (seconds>-1) {
    if (
years != 0) {
        
howlong years+" Jahr";
        if (
years>1) {
            
howlong howlong+"e";
        }
    }
    if (
months != 0) {
        
howlong howlong+" "+months+" Monat";
        if (
months>1) {
            
howlong howlong+"e";
        }
    }
    if (
days != 0) {
        
howlong howlong+" "+days+" Tag";
        if (
days>1) {
            
howlong howlong+"e";
        }
    }
    if (
hours != 0) {
        
howlong howlong+" "+hours+" Stunde";
        if (
hours>1) {
            
howlong howlong+"n";
        }
    }
    if (
minutes != 0) {
        
howlong howlong+" "+minutes+" Minute";
        if (
minutes>1) {
            
howlong howlong+"n";
        }
    }
    if (
seconds != 0) {
        
howlong howlong+" "+seconds+" Sekunde";
        if (
seconds>1) {
            
howlong howlong+"n";
        }
    }
} else {
    
howlong "Ziel erreicht!!!";
}
/////////////////////////////////////////////////////////////////////
///////////////////////// Countdown ausgeben ////////////////////////
/////////////////////////////////////////////////////////////////////
var countdown howlong
Leider funktioniert nicht alles so wie ich es mir vorstelle...
Hier seht ihr das SWF: http://www.coadex.com/mitarbeiter/mike/countdown.swf

Die Serverzeit läuft wunderbar hoch – Kein Problem
Die Differenz zählt einwandfrei runter – auch kein Problem
Die Zahlenkette für den Stichtag scheint mir nicht korrekt das sollte Eigentlich der 17. Juli 2007 sein.
Der Countdown macht keinen wank, der sollte sich doch analog zur Differenz verändern...

Bitte guckt euch das mal an – Danke
Angehängte Dateien
Dateityp: zip countdown_php.zip (23,5 KB, 26x aufgerufen)
HC-Flasher ist offline   Mit Zitat antworten
Alt 11-07-2007, 19:00   #2 (permalink)
Swiss Cowboy
 
Benutzerbild von HC-Flasher
 
Registriert seit: Feb 2006
Beiträge: 86
Ich habe es hinbekommen
Eure Meinung würde mich aber interessieren
- Habe ich irgendwelche Grundlegenden Fehler gemacht?
- Kann man das ganze eleganter lösen?
- Seht ihr irgendwo kritische Punkte?

Vielleicht sind andere Flasher mal froh über diese Lösung. Deswegen würde ich es begrüßen, wenn das Script noch verbessert würde.

Bei mir auf dem Server läuft es einwandfrei. Ich habe den Countdown auch schon runter laufen lassen. Wie gewünscht, springt er ins Schlüsselbild „start“. Wenn ein User auf die Seite kommt und der Countdown ist schon abgelaufen, wird auch das Schlüsselbild „start“ aufgerufen.

Da ich einiges umgestellt habe, zieht ech doch die Dateien...

Gruss,
Mike
Angehängte Dateien
Dateityp: zip countdown_mit_php.zip (46,0 KB, 126x aufgerufen)

Geändert von HC-Flasher (12-07-2007 um 17:04 Uhr)
HC-Flasher ist offline   Mit Zitat antworten
Alt 27-07-2007, 10:05   #3 (permalink)
Neuer User
 
Benutzerbild von Maddin2
 
Registriert seit: Jan 2004
Beiträge: 45
Hi, sag mal, wie bekomm ich hin das die Ziffern immer zweistellig angezeigt werden? Also statt 8 Tage 08 Tage?

mfg Maddin
Maddin2 ist offline   Mit Zitat antworten
Alt 29-02-2008, 14:08   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 92
@HC-Flasher

könntest du bitte die richtige Datei nochmal hochladen. Sowohl die php-Datei als auch die FLA enthalten andere Daten als die des hier geposteten Scripts. Hab versucht, dann einfach das Ganze rauszukopieren und zu ersetzen, doch der Countdown funktioniert auf diese Art und Weise nicht.
TT-296 ist offline   Mit Zitat antworten
Alt 29-02-2008, 14:12   #5 (permalink)
WIP
 
Benutzerbild von Stixx
 
Registriert seit: Sep 2005
Ort: Augsburg
Beiträge: 367
Zitat:
Zitat von Maddin2 Beitrag anzeigen
Hi, sag mal, wie bekomm ich hin das die Ziffern immer zweistellig angezeigt werden? Also statt 8 Tage 08 Tage?

mfg Maddin
ohne das script zu kennen

if (tage < 10) {
text.text = "0"+tage;
}
__________________
blog.Beyond.Remedy| Last.FM
...work in Progress...
Stixx ist offline   Mit Zitat antworten
Alt 04-03-2008, 11:16   #6 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 92
woran liegt's, dass dein Countdown nicht im 7er oder 8er Player läuft?
TT-296 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



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:09 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele