Avatar billede jeg_var_gangsta Nybegynder
25. juni 2008 - 09:43 Der er 3 kommentarer og
1 løsning

Er countdown overskredet?

Hej. Jeg har fundet dette script på nettet, som laver en nedtælling til en bestemt dato/klokkeslæt:
--- --- ---
var goalDate = new Date(2008, 6, 1, 16, 0, 0);
//
function dateDif(date1, date2){
    var span = Math.abs(date1.valueOf() - date2.valueOf());
    var days = Math.floor(span/86400000);
    var hours = Math.floor((span%86400000)/3600000);
    var minutes = Math.floor((span%3600000)/60000);
    var seconds = Math.floor((span%60000)/1000);
    return {dx:spanx, d:days, h:hours, m:minutes, s:seconds};
}
//

myTextFormat = new TextFormat();
myTextFormat.bold = true;
myTextFormat.font = "Myriad Pro";
myTextFormat.color = 0x000000;
myTextFormat.size=16;
//
createTextField("Fred", 10, 25, 255, 500, 50);
onEnterFrame = function(){
    var now = new Date();
    var dd = dateDif(now, goalDate);   

        Fred.text = dd.d+" Days, ";
        Fred.text += (dd.h+" Hours, ");
        Fred.text += (dd.m+" Minutes and ");
        Fred.text += (dd.s+" Seconds ");
 
    Fred.setTextFormat(myTextFormat);
}
--- --- ---
Problemet er:
Når nedtællingen er overskredet, begynder uret at tælle opad. Dette har sandsynligvis noget med Math.abs() at gøre.

Spørgsmål:
Hvordan kan jeg gøre, så teksten ændrer sig når nedtællingen er overskredet? Det jeg egentlig skal er, at finde ud af hvornår tallet er negativt / tæller opad.

Nogle idéer?

Vh. Christian
Avatar billede jeg_var_gangsta Nybegynder
25. juni 2008 - 09:48 #1
Jeg var ude i noget med at lave:
var spanx = Math(date1.valueOf() - date2.valueOf()); og så return {dx:spanx (...) (deraf dx:spanx i det oprindelige spørgsmål)

Og så senere tjekke om dd.dx>0, men det virkede ikke..

Alle idéer er velkomne :)

Vh. Christian
Avatar billede pidgeot Nybegynder
25. juni 2008 - 09:52 #2
Jeg er ikke lige ekspert i ActionScript, men du kan sikkert tilpasse det hvis jeg laver fejl.

Det er netop abs der laver ged i den, fordi den fjerner fortegnet. I stedet skal du trække den aktuelle dato fra målet (rækkefølgen er altså vigtig!), og se om resultatet er større end 0 - hvis ikke, returnerer du din egen besked i stedet.

Dvs. at i stedet for linjen:
var span = Math.abs(date1.valueOf() - date2.valueOf());

skal du bruge noget i stil med dette
var span = date2.valueOf() - date1.valueOf();
if (span <= 0)
  return "Så er tiden gået"
Avatar billede jeg_var_gangsta Nybegynder
25. juni 2008 - 10:29 #3
Hey - Mange tak for det hurtige reply. Jeg fik rodet lidt med det, og nu virker det:

var goalDate = new Date(2008, 6, 1, 16, 0, 0);
//
function dateDif(date1, date2){
    var span = Math.abs(date1.valueOf() - date2.valueOf());
    var days = Math.floor(span/86400000);
    var hours = Math.floor((span%86400000)/3600000);
    var minutes = Math.floor((span%3600000)/60000);
    var seconds = Math.floor((span%60000)/1000);
    return {d:days, h:hours, m:minutes, s:seconds};
}
//

myTextFormat = new TextFormat();
myTextFormat.bold = true;
myTextFormat.font = "Myriad Pro";
myTextFormat.color = 0x000000;
myTextFormat.size=16;
//
createTextField("Fred", 10, 25, 255, 500, 50);
onEnterFrame = function(){
    var now = new Date();
    var dd = dateDif(now, goalDate); 
   
    var spanchk = now.valueOf() - goalDate.valueOf();
    if (spanchk <= 0){
       
        Fred.text = dd.d+" Days, ";
        Fred.text += (dd.h+" Hours, ");
        Fred.text += (dd.m+" Minutes and ");
        Fred.text += (dd.s+" Seconds ");
       
    } else {

        Fred.text = "Nedtællingen er forbi.";
       
    }

    Fred.setTextFormat(myTextFormat);
}


Smid et svar, så får du point. :)

Vh. Christian
Avatar billede pidgeot Nybegynder
25. juni 2008 - 10:30 #4
Værsgo :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester