Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-09-2003, 15:14   #1 (permalink)
möchtegernprogrammierer
 
Registriert seit: Aug 2002
Beiträge: 66
Unhappy Problem mit Countdown

Hallo,

ich habe einen Countdown aus dem Forum hier benutzt - allerdings hab ich noch zwei Probleme:

1. Der Tag des Zieldatums soll abgefragt werden und falls mit dem aktuellen Tagesdatum identisch, soll folgendes ausgeführt werden: gotoAndPlay("Stichtag");

2. Wenn das Zieldatum (Tag und Uhrzeit) erreicht ist, soll folgendes ausgeführt werden: gotoAndPlay("Vorbei");

Wie geht das? Ich hab was ausprobiert mit If (Day=0) und (Day<0) aber das geht nich... ;-(

Könnt Ihr mir helfen? Wäre klasse, grandios und ich wär sehr dankbar...

Hier das Script:

ActionScript:
  1. // Flashbattle.de 2003
  2. // Sven Gasser
  3. // Hier wird unser Zieldatum eingetragen
  4. jahr = 2004;
  5. monat = 9;
  6. tag = 26;
  7. zeit = 18;
  8. // Unser Date Objekt wird mit unserem Zieldatum initialisiert
  9. // monat-1 weil Flash die Monate ab 0 Zählt
  10. // Beispiel: Januar=0 Februar=1 usw. Dezember=11
  11. ziel = new Date(jahr, monat-1, tag, zeit);
  12. // Die function counter wird von ganz unten setInterval aufgerufen
  13. function counter() {
  14.         // Unser neues Datumobjekt mit dem aktuellem Zeitdatum
  15.         akdate = new Date();
  16.         // Von unserm Zieldatum ziehen wir die aktuelle Zeit ab und lassen
  17.         // uns den Restwert als Sekunden zurückgeben, deswegen auch /1000
  18.         // 1000 sind 1000 Millisekunden = 1 Sekunde ;-)
  19.         // modifikation von Tschdaeff
  20.         // damit die rechnung auch über den aktuellen monat hinaus funktioniert
  21.         // muss man eine kleine Umrechung machen
  22.         // Aktuellen Monat feststellen
  23.         aktmonat = akdate.getMonth();
  24.         // trace(akdate);
  25.         difftime = Math.floor((ziel-akdate)/1000);
  26.         difftime2 = Math.floor((ziel-akdate)/1);
  27.         difftime3 = (Math.floor((ziel-akdate)/100));
  28.         // trace(difftime);
  29.         // Ganz normale Restwertrechnung
  30.         // Errechnet die Sekunden von difftime
  31.         millisee100 = difftime3%100;
  32.         millisee = difftime2%1000;
  33.         sec = difftime%60;
  34.         minuten = Math.floor(difftime/60);
  35.         min = minuten%60;
  36.         // Tschdaeff: überpfüfen ob der aktuelle Monat gleich dem ziel Monat ist
  37.         if (aktmonat == monat-1) {
  38.                 stunden = Math.floor(minuten/60);
  39.         } else {
  40.                 stunden = Math.floor(minuten/60)+1;
  41.         }
  42.         stu = stunden%24;
  43.         day = Math.floor(stunden/24);
  44.         // Überprüfung ob unser Wert kleiner 10 ist, wenn ja,
  45.         // wird eine 0 vorne hinzugefügt
  46.         day = (day<10) ? "0"+day : day;
  47.         stu = (stu<10) ? "0"+stu : stu;
  48.         min = (min<10) ? "0"+min : min;
  49.         sec = (sec<10) ? "0"+sec : sec;
  50.         millisee100 = (millisee100<10) ? "0"+millisee100 : millisee100;
  51.         millisee = (millisee<10) ? "0"+millisee : millisee;
  52.         millisee = (millisee<100) ? "0"+millisee : millisee;
  53.         // Textfeldern werden nun die Werte zugewiesen
  54.         // .text da wir einem Instanznamen ein String zuweisen wollen
  55.         _root.tage.text = day;
  56.         _root.stun.text = stu;
  57.         _root.minu.text = min;
  58.         _root.sek.text = sec;
  59. }
  60. // Hier wird unsere function counter jede Sekunde aufgerufen
  61. setInterval(counter, 1);
the fly ist offline   Mit Zitat antworten
Alt 01-10-2003, 10:16   #2 (permalink)
möchtegernprogrammierer
 
Registriert seit: Aug 2002
Beiträge: 66
Kann mir niemand helfen?
the fly ist offline   Mit Zitat antworten
Alt 01-10-2003, 10:38   #3 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
hi, ans ende dess scripts:

ActionScript:
  1. _root.tage.text = day;
  2.     _root.stun.text = stu;
  3.     _root.minu.text = min;
  4.     _root.sek.text = sec;
  5. //   ab hier einfügen
  6.     if (day == 0 && stu == 0 && min == 0 && sec == 0) {
  7.         clearInterval(inter);
  8.         meinpfad.gotoAndPlay("Vorbei");
  9.     }
  10. //   bis hier
  11. };
  12. // Hier wird unsere function counter jede Sekunde aufgerufen
  13. inter = setInterval(counter, 1);//<-----diese zeile ebenfalls ändern
  14.  


<edit> hab die if-zeile nochmal geändert. </edit>

Geändert von warrantmaster (01-10-2003 um 10:45 Uhr)
warrantmaster ist offline   Mit Zitat antworten
Alt 01-10-2003, 11:12   #4 (permalink)
möchtegernprogrammierer
 
Registriert seit: Aug 2002
Beiträge: 66
hi warrantmaster,

DANKE! das funktioniert! ich habe die if-zeile nochmal geändert, weil ja nicht genau bei eintreten von

day == 0 && stu == 0 && min == 0 && sec == 0

etwas passieren soll, sondern wenn

day = 00

jetzt weiß ich nur noch nicht, wie ich erreiche, das nach eintreten des zieldatums INKLUSIVE uhrzeit etwas anderes passieren soll - also ab 01.09.2004 18:00:01 Uhr. sobald das zieldatum + uhrzeit erreicht ist, zählt er nämlich wieder rückwärts plus 1 usw...

??? hier nochmal das aktualisierte AS:

ActionScript:
  1. // Flashbattle.de 2003
  2. // Sven Gasser
  3. // Hier wird unser Zieldatum eingetragen
  4. jahr = 2004;
  5. monat = 9;
  6. tag = 26;
  7. zeit = 18;
  8. // Unser Date Objekt wird mit unserem Zieldatum initialisiert
  9. // monat-1 weil Flash die Monate ab 0 Zählt
  10. // Beispiel: Januar=0 Februar=1 usw. Dezember=11
  11. ziel = new Date(jahr, monat-1, tag, zeit);
  12. // Die function counter wird von ganz unten setInterval aufgerufen
  13. function counter() {
  14.     // Unser neues Datumobjekt mit dem aktuellem Zeitdatum
  15.     akdate = new Date();
  16.     // Von unserm Zieldatum ziehen wir die aktuelle Zeit ab und lassen
  17.     // uns den Restwert als Sekunden zurückgeben, deswegen auch /1000
  18.     // 1000 sind 1000 Millisekunden = 1 Sekunde ;-)
  19.     // modifikation von Tschdaeff
  20.     // damit die rechnung auch über den aktuellen monat hinaus funktioniert
  21.     // muss man eine kleine Umrechung machen
  22.     // Aktuellen Monat feststellen
  23.     aktmonat = akdate.getMonth();
  24.     // trace(akdate);
  25.     difftime = Math.floor((ziel-akdate)/1000);
  26.     difftime2 = Math.floor((ziel-akdate)/1);
  27.     difftime3 = (Math.floor((ziel-akdate)/100));
  28.     // trace(difftime);
  29.     // Ganz normale Restwertrechnung
  30.     // Errechnet die Sekunden von difftime
  31.     millisee100 = difftime3%100;
  32.     millisee = difftime2%1000;
  33.     sec = difftime%60;
  34.     minuten = Math.floor(difftime/60);
  35.     min = minuten%60;
  36.     // Tschdaeff: überpfüfen ob der aktuelle Monat gleich dem ziel Monat ist
  37.     if (aktmonat == monat-1) {
  38.         stunden = Math.floor(minuten/60);
  39.     } else {
  40.         stunden = Math.floor(minuten/60)+1;
  41.     }
  42.     stu = stunden%24;
  43.     day = Math.floor(stunden/24);
  44.     // Überprüfung ob unser Wert kleiner 10 ist, wenn ja,
  45.     // wird eine 0 vorne hinzugefügt
  46.     day = (day<10) ? "0"+day : day;
  47.     stu = (stu<10) ? "0"+stu : stu;
  48.     min = (min<10) ? "0"+min : min;
  49.     sec = (sec<10) ? "0"+sec : sec;
  50.     millisee100 = (millisee100<10) ? "0"+millisee100 : millisee100;
  51.     millisee = (millisee<10) ? "0"+millisee : millisee;
  52.     millisee = (millisee<100) ? "0"+millisee : millisee;
  53.     // Textfeldern werden nun die Werte zugewiesen
  54.     // .text da wir einem Instanznamen ein String zuweisen wollen
  55.     _root.tage.text = day;
  56.     _root.stun.text = stu;
  57.     _root.minu.text = min;
  58.     _root.sek.text = sec;
  59.     if (day == 0) {
  60.         clearInterval(inter);
  61.         gotoAndPlay("Vorbei");
  62.     }
  63. };
  64. // Hier wird unsere function counter jede Sekunde aufgerufen
  65. inter = setInterval(counter, 1);
the fly ist offline   Mit Zitat antworten
Alt 01-10-2003, 14:21   #5 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ist nicht richtig, stell mal auf heute 16 uhr ein und laß den countdown da reinlaufen. (mit der if-abfrage von oben ).
wenn alle 4 werte 0 sind, dann wird das interval gelöscht
und die goto anweisung ausgeführt. wenn du jetzt (!)
z.b. auf 15 uhr einstellen würdest, dann wird die if-bedingung
ja nicht wahr, somit auch der rest nicht erledigt.
warrantmaster ist offline   Mit Zitat antworten
Alt 01-10-2003, 15:25   #6 (permalink)
möchtegernprogrammierer
 
Registriert seit: Aug 2002
Beiträge: 66
jo, stimmt - aber wenn man jetzt (!) aber das flash-file aufruft, dann liegt "jetzt" nach dem zieldatum/-uhrzeit und es funktioniert nicht mehr. der counter zählt dann ab der 1. sekunde aufwärts.

vielleicht wird's klarer, wenn ich das nochmal erkläre:

zieldatum/-uhrzeit ist:
26.09.2004 18:00 uhr

ab 26.09.2004 00:00 - 17:59 soll passieren:
gotoAndPlay("Stichtag");

ab 26.09.2004 18:00 soll passieren:
gotoAndPlay("Vorbei");

haste da noch eine idee?
hab die fla mal beigehängt...
the fly ist offline   Mit Zitat antworten
Alt 01-10-2003, 15:26   #7 (permalink)
möchtegernprogrammierer
 
Registriert seit: Aug 2002
Beiträge: 66
hier die fla......
Angehängte Dateien
Dateityp: zip counter.zip (7,6 KB, 26x aufgerufen)
the fly ist offline   Mit Zitat antworten
Alt 01-10-2003, 16:11   #8 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
leg in "stichtag" einen timer, der die miute runterzählt,
und dann zu "vorbei" springen läßt.
der rest kann dann so bleiben.
warrantmaster 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 05:02 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele