Avatar billede flash_gordon Nybegynder
28. oktober 2001 - 11:01 Der er 8 kommentarer og
1 løsning

GetDate problemer

Jeg har sat følgende på en knap

on (rollOver) {
    Tekst = \"Dagens påfund\";
}
on (rollOut) {
    Tekst = \"\";
}
on (release) {
    // Funktion der finder ud af hvilken dag det er.
    myDate = new Date();
    Dag = (mydate.getDay());
    if (Dag eq 1) {
        Dag = \"Mandag\";
    }
    if (Dag eq 2) {
        Dag = \"Tirsdag\";
    }
    if (Dag eq 3) {
        Dag = \"Onsdag\";
    }
    if (Dag eq 4) {
        Dag = \"Torsdag\";
    }
    if (Dag eq 5) {
        Dag = \"Fredag\";
    }
    if (Dag eq 6) {
        Dag = \"Lørdag\";
    }
    if (Dag eq 7) {
        Dag = \"Søndag\";
    }
    // Loader dagens .swf
    if (Dag eq \"Mandag\") {
        getURL (\"java script:openNewWindow(\'Mandag.html\',\'Hmm\',\\r\\n\'height=500,width=550,toolbar=no,scrollbars=no\')\");
    }
    if (Dag eq \"Tirsdag\") {
        getURL (\"java script:openNewWindow(\'Tirsdag.html\',\'Hmm\',\\r\\n\'height=400,width=550,toolbar=no,scrollbars=no\')\");
    }
    if (Dag eq \"Onsdag\") {
        getURL (\"java script:openNewWindow(\'Onsdag.html\',\'Hmm\',\\r\\n\'height=300,width=225,toolbar=no,scrollbars=no\')\");
    }
    if (Dag eq \"Torsdag\") {
        getURL (\"java script:openNewWindow(\'Torsdag.html\',\'Hmm\',\\r\\n\'height=400,width=550,toolbar=no,scrollbars=no\')\");
    }
    if (Dag eq \"Fredag\") {
        getURL (\"java script:openNewWindow(\'Fredag.html\',\'Hmm\',\\r\\n\'height=200,width=500,toolbar=no,scrollbars=no\')\");
    }
    if (Dag eq \"Lørdag\") {
        getURL (\"java script:openNewWindow(\'Lordag.html\',\'Hmm\',\\r\\n\'height=300,width=450,toolbar=no,scrollbars=no\')\");
    }
    if (Dag eq \"Søndag\") {
        getURL (\"java script:openNewWindow(\'Sondag.html\',\'Hmm\',\\r\\n\'height=240,width=240,toolbar=no,scrollbars=no\')\");
    }
}


Meningen var at jeg ville bruge \"getdate\" funktion og derudfra kunne loade 7 forskellige flash filer. Det virkede fint i går (lørdag) men her i dag (søndag). Er der noget jeg har overset?
Avatar billede Slettet bruger
28. oktober 2001 - 11:54 #1
Søndag == 0
nb. ungå at bruge specieltegn i din AS.
Avatar billede flash_gordon Nybegynder
28. oktober 2001 - 12:51 #2
>Søndag == 0

Det var dog det mest ulogiske at Søndag er == 0 og mandag er == med 1 osv. Jeg prøvede at rette min flash fil til, og vender snart tilbage.
Avatar billede flash_gordon Nybegynder
28. oktober 2001 - 12:52 #3
Hvad er egentlig forskellen på == og eq?
Avatar billede flash_gordon Nybegynder
28. oktober 2001 - 13:02 #4
Jeg er fået det til at virke! Tusind tak.
Hvis du vil have point må du lave et svar, men det vil du vel ikke... Endnu engang tak.
Avatar billede snarf Nybegynder
28. oktober 2001 - 16:25 #5
eq er fra flash 4 og det virker vist stadig, men == er den \"nye\" måde at skrive det på i flash 5 og planen fra macromedia er udskifte alt det \"gamle\" kodesprog så du kan ligeså godt vænne dig til det...
Avatar billede flash_gordon Nybegynder
28. oktober 2001 - 18:02 #6
Ok. tak Snerf. Lav et svar hvis du vil have nogle point
Avatar billede gotcha Nybegynder
29. oktober 2001 - 18:09 #7
Når du skal sammenligne noget i Flash 5, så bruges operatoren == . Operatoren eq bruges kun, når du har at gøre med tekst.

I dit tilfælde ville jeg helt klart undgå at bruge alle de if-sætninger! For det første har du lavet dem sådan, at Flash skal gå igennem dem alle sammen. Dette er jo ikke nødvendigt, da du f.eks. ikke både kan have en lørdag og søndag på samme tid. Hvis du stadig vil beholde dine if-sætninger, så skal du altså lave dem om til else if.

Imidlertid ville jeg helt klart foretrække at lave et array, og så bare slå op i det array. Vedhæft følgende kode til dit movie clip:

onClipEvent (load) {

  dates = [\"Søndag\", \"Mandag\", \"Tirsdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lørdag\"];

}

Dette vedhæftes til din knap:

on (release) {

  myDate = new Date();
  dateValue = myDate.getDay();
  Dag = dates[dateValue];

}

Du bruger på samme måde arrayet til at hente den rigtige fil (vi sparer altså en helvedes masse linier og unødvendigt skriveri!) :)

Mvh Morten
Avatar billede flash_gordon Nybegynder
29. oktober 2001 - 19:46 #8
Tak for løsningen gotcha. Men tror det eller ej, jeg fortrækker pt det anden løsning, da jeg lige er begyndt på at lege med Actionscript og derfor fortrækker ting jeg nemt kan genkende. Men på et senere tidspunkt vil jeg klart undersøge din metode og nok også ende med at bruge. Du er sku\' for avanceret for mig (igen).

Din \"else if\" er dog blevet modtaget med kyshånd. Men når du siger at den skal tjekke alle mine sætninger igennem i mine gamle metode, er det så noget at der kan mærkes? Vil det gå væsentligt langsommere?
Jeg føler helt at jeg misbruger din viden ved hele tiden at bruge andres metoder som er dårliger. Håber ikke du er træt af det, og selvfølgelig får du mine 60 point for dit svar. Endnu engang tak.
Avatar billede gotcha Nybegynder
29. oktober 2001 - 20:45 #9
Det gør skam ikke noget, hvis du ikke vil bruge et array (det er dog langt nemmere og en rigtig god måde at opbevare information, så jeg vil helt klart anbefale, at du begynder at rode med dem) :9

I din første metode tager Flash først og undersøger din første if-sætning, og de andre skal som sagt være else if, da du kun oplever ét tilfælde. Jeg har ikke gidet at lave nogle tests, men det er helt klart meget hurtigere at anvende min metode. I dit tilfælde har du en forholdsvis begrænset mængde kode, men hvis du f.eks. tager 100 kopier med din metode, så vil det da køre en del langsommere end hvis du havde anvendt min metode.

Du kan evt. prøve følgende:

on (release) {
    start = getTimer();
    myDate = new Date();
    Dag = (mydate.getDay());
    if (Dag eq 1) {
        Dag = \"Mandag\";
    }
    if (Dag eq 2) {
        Dag = \"Tirsdag\";
    }
    if (Dag eq 3) {
        Dag = \"Onsdag\";
    }
    if (Dag eq 4) {
        Dag = \"Torsdag\";
    }
    if (Dag eq 5) {
        Dag = \"Fredag\";
    }
    if (Dag eq 6) {
        Dag = \"Lørdag\";
    }
    if (Dag eq 7) {
        Dag = \"Søndag\";
    }
    slut = getTimer();
    trace((slut-start)/1000);
}

Med min ser det sådan ud (du skal selvfølgelig stadig vedhæfte ovenstående array til dit movie clip):

on (release) {

  start = getTimer();
  myDate = new Date();
  dateValue = myDate.getDay();
  Dag = dates[dateValue];
  slut = getTimer();
  trace((slut-start)/1000);

}

Som sagt er det en forholdsvis begrænset mængde kode, men den er alligevel væsentlig hurtigere at skrive, og oven i købet får jeg en forbedring i hastighed på 25 % med min metode :)

Mvh Morten
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