Det er faktisk mere kompliceret end som så! Det hele skal jo først omregnes til UTC timezone. Så skal der tages hendsyn til eventuelle skudår. Derefter skal til regnes tilbage til lokal tid.
Her er så mit bud. Sender gerne fla til dig hvis du skriver en mail med referance til dette spørgsmål.
onClipEvent (enterFrame) { launchDate = new Date(2002,0,1); // dette er d. 1. januar, 2002 // måneder tæller fra 0 til 11 fks. er februar = 1, april = 3, osv today = new Date();
minTid = \"Time to launch \" + antalDageTilLaunch + \" dage \";
// hvis vi gerne vil vise hver variabel med 2 ciffre fks. 23:09:41 // skal vi sammensætte variablerne med et ekstra \"0\" foran hvis variablen er mindre end 10 if (antalTimer<10) { antalTimer_tekst = \"0\"+antalTimer; } else { antalTimer_tekst = \"\"+antalTimer; } if (antalMinuter<10) { antalMinuter_tekst = \"0\"+antalMinuter; } else { antalMinuter_tekst = \"\"+antalMinuter; } if (antalSek<10) { antalSek_tekst = \"0\"+antalSek; } else { antalSek_tekst = \"\"+antalSek; } // Nu sættes de sammen til en hel streng som vises i det dynamiske tekstfelt med variablen minTid minTid = minTid + antalTimer_tekst+\" timer \"+antalMinuter_tekst+\" minuter \"+antalSek_tekst+ \" Sek \";
Alle date objekter har en fast referance dato, vist nok omkring 1970.
Derfor tager flash Date funktioner højde for skudår mm. tror jeg da, og hører gerne fra Jer hvis I kan påvise det modsatte :o=)
Jeg er jo også her for at tage ved lære af jeres erfaringer. Det er ingen overdrivelse når jeg tilstår at alt mit Flash kendskab stammer fra eksperten\'s spørgsmål og Colin Moock\'s Bibel :)
Flash har jo den funktion der hedder getUTCMilliseconds, som jeg egentlig havde regnet med at bruge, da den regner fra den referance dato. Det gør den ihvertfald i normal JavaScript, men NEJ, det gør den ikke i Flash! BLAH! De tæller den lokale brugers sekunder... skod.
Men du har vist stadig ikke taget højde for tidsforskelle? Eller er det også automatisk med?
Giv mig lige et skudår og også et der ikke er det. Så kan vi hurtigt få tjekket om min antagelse er korrekt eller forkert. MHT til timezones vil jeg undersøge det nærmere.
Deet lyder flot det hele, men jeg er forholdsvis nybegynder og det er derfor at jeg efterlyste en tutorial, eller en fla fil, så jeg kan se hvordan den er bygget op.
1. lav et tekstfelt og i \'Text Options\' panelet vælg \'Dynamic text\' , så dukker der et \'variable\' felt op i samme panel og her indtastes \'minTid\' som variabelnavnet.
2. Selekter dit tekstfelt med \'Arrow Tool\' og gå op i \'Insert >> Conver to Symbol >> movieClip. 3. Navn giv dit nye instance i \'Instance\' panelet 4. Sæt actionen (Den står for oven) på dit movieClip ved at klikke på tekstfeltet een gang og åbn \'Actions\' vinduet. hvis du har dette vindue i Normal Mode klikker du på den sorte trekant i øvre højre hjørne og vælger \'Expert mode\' i dropDown menuen. 5. Nu kan du paste koden ind og redigere enden linje til launchDate = new Date(2001,11,3); //dette er den 3. december 2001 fordi månederne tælles fra 0 til 11
Der sker ikke noget overhovede. Lad mig sende dig min fla fil, så kan måske se hvad jeg har gjort galt. Du får selvfølgelige flere points for alt den hjælp du giver mig-
Rettede udgave sendt... Du havde lavet tekstfeltet til et symbol som var inde i et movieClip som lå på stage. Derfor blev teksten ikke opdateret. mvh geo
Ok det jeg ikke forstår er om du bruger symbol 2 eller din originale. For når jeg bruger din originale, kan jeg ikke komme ind i noget aktion. men det kan jeg godt på symbol2. men hvis jeg skal ændre i punktstørrelsen, kan jeg kun gøre det via din originale movie?
Er der nogle måder at jeg kan ændre teksten i stringen, så der står ReLaunch istedet for Time to launch
Er der nogle måder at jeg kan ændre teksten i stringen, så der står ReLaunch istedet for Time to launch >> det er nemt, men først skal du være i stand til at komme ind i min action. Hvad står der øverst i Flash status linjen ? der hvor du ser \"Scene1....\" ? Jeg tror et du er kommet for dybt ind i MC\'en
OK sørg for at der kun står \"scene1\" og hold øje med linjen imens du gør følgende. 1) Åbn \'Movie Explorer\' vinduet 2) Nu bør du kunne se UrMC,(minTid) , så Klik på + tegnet ud for dette 3) Nu vises en lille blå ikon med en pil. Dobbelklik på denne.
Nu burde actionsvinduet komme frem efter et stykke tid med alle clip actioner
Alt det der står nedtonet i gråt er tekststenge du selv kan ændre på: Hvis du lige skriver et eksempel på hvad der skal stå på linjen redigerer jeg gerne actionen for dig.
Hvis du gerne vil gøre det selv kommer der et par tips her
der står en linje
minTid = \"Time to launch \" + antalDageTilLaunch + \" dage \";
Den laves om til
minTid = \"ReLlaunch \" + antalDageTilLaunch + \" days \";
Det kan godt være jeg er lidt ude på dybt vand her, men med hensyn til skudår og andre ting, kan man så bare ikke bruger den tid som brugeren har på sin pc? så burde det da klare skudår problemet?
Hey, det er et helt kanont link! :o) Også ret sjov læsning, for noget af det fatter jeg ikke en dyt af. Jeg kunne f.eks. godt tænke mig at vide hvordan man har fundet frem til månedstallene! Tak for det Nikolaj, her på arbejdet sidder vi nu og morer os med at regne forskellige dage ud :) Men faktisk fandt jeg en lille fejl i hans vejledning. Det er vigtigt at trække eventuelle century og Leap Years fra INDEN de 7*x. Prøv f.eks at regne 28/2/2100. Hans JavaScript i bunden af siden giver det rigtige, men det gør Flashen ikke.
Jeg har skrevet til ham angående dette og har samtidig spurgt hvordan man har regnet månedskoderne ud.
sorte_slyngel>> Paw og Nikolaj er ikke efter point, blot mere viden omkring Date() funktionerne, deres omfang/begrænsninger og evt. workarounds. Sådan fungerer eksperten heldigvis også :)
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.