Avatar billede vat69 Nybegynder
23. november 2006 - 16:45 Der er 11 kommentarer og
2 løsninger

Auto script - dato betinget

Hej Alle

Jeg er ved at bixe med  en form for julekalender som naturligvis skal ha 24 "låger" jeg leder efter et script der når kalenderen loades tjekker hvilken dato det er og herefter går til en bestemt frame som jeg har sat den til.
Er noget sådan muligt?
Mvh
Vat69
Avatar billede thulstrup Nybegynder
23. november 2006 - 17:32 #1
Du får datoen sådan her:
var dato:Number = new Date().getDate();

Datoen er afhængig af computerens dato, så hvis brugeren sætte sin dato til d. 24., vil Flash tro at det er d. 24.
Avatar billede maqhem Nybegynder
23. november 2006 - 17:39 #2
var goto:Array = new Array(2, 3, 6, 9, 10, 36, 55, 56, 57, 99, 102, 103, 200, 300, 450, 600, 1001, 2002, 3003, 3210, 4321, 12345, 456123, 500000, 500001);
var nd:Date = new Date();
var d = nd.getDate();
if(nd.getMonth() == 11 && d < 25) {
    gotoAndStop(goto[d]);
} else {
    gotoAndStop(goto[0]);
}

goto indeholder de frames, som den aktuelle dato skal springe til. Arrays er nul-termineret, det vil sige, at første værdi har nummeret 0. Denne værdi, hér 2, gåes til, hvis det ikke er december eller datoen er mere den 24. december.
Ellers går det bare derudad: Værdi 1 (3) gåes til, hvis vi har den 1. december. Værdi 2 (6) gåes til, hvis vi har den 2. december. Værdi 3 (9) gåes til, hvis vi har den 3. december etc.
Avatar billede maqhem Nybegynder
23. november 2006 - 17:42 #3
Og ja, det er selvfølgelig rigtigt, at hvis brugeren sætter sit ur, ændrer det udfaldet af Flash-filmen. Dette kan du ordne, hvis du sender et request mod en php-side, der tilbage sender serverens dato.
Avatar billede vat69 Nybegynder
24. november 2006 - 10:52 #4
Hej Maghem og tak for scriptet

Jeg har prøvet dit script, jeg har sat koden ind i første frame og givet denne frame navnet 2 nede i Properties feltet.
I den næste frame har jeg givet navnet 3.
Jeg ville teste om den gik til min næste frame hvis jeg ændrede mit ur til den 1 dec. på min pc, men den går til frame 2 slevom jeg ikke har ændret mit ur og datoen på mit ur er datoen  i dag.
Har jeg misforstået hvorledes det fungere?
Avatar billede thulstrup Nybegynder
24. november 2006 - 10:58 #5
maqhem's script benytter ikke framelabels, men selve nummeret på framen.
Hvis du i arrayet defineret en værdi der hedder 3, vil scriptet altså gå til frame nummer 3 og ikke den frame der hedder 3.
Avatar billede vat69 Nybegynder
24. november 2006 - 11:38 #6
Of Cause !

Og Super det virker perfekt, I har begge hjulpet er det ok med en 30 point til thulstrup og 90 til maghem som kom med scriptet. Er det ok.?

Jeg tror jeg opretter et spg. ang. en dato request til en PHP side - hvis jeg ikke finder et tidligere spg. her inde på eksperten for lige at fin pudse kalenderen.
Avatar billede maqhem Nybegynder
24. november 2006 - 13:53 #7
Jeg kan kun anbefale dig dét med php-requestet, desværre ved jeg ikke, hvordan php læserdatoen på serveren, for resten kan jeg godt ordne.
Men du kan helt sikkert finde det på ekspertens php-kategori.

Hvis du finder ud af, hvordan php læser datoen på serveren, vil jeg godt hjælpe dig med Flash-delen.

På php-siden til at outputte dette:

d=DATO&m=MÅNED

... hvor DATO od MÅNED selvfølgelig er serverens svar på disse.

Hér er så et komplet script:

var goto:Array = new Array(26, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25);
var ml:LoadVars = new LoadVars();
ml.onLoad = function(success:Boolean):Void {
    if(success) {
        if(this.m == 11 && this.d) {
            gotoAndStop(goto[this.d]);
        }
    } else {
        gotoAndStop(goto[0]);
    }
}
ml.load("http://www.dinside.dk/php-side.php");
Avatar billede maqhem Nybegynder
24. november 2006 - 13:55 #8
... Denne går til samme side, hvis serveren er gået ned, som hvis datoen ligger udenfor intervallet mellem 1. december og 24. december.
Avatar billede thulstrup Nybegynder
24. november 2006 - 13:59 #9
Og her er php'en du skal bruge:

<?php
echo "?d=" . date('j') . "&m=" . date('n');
?>
Avatar billede maqhem Nybegynder
24. november 2006 - 14:32 #10
Jeg laver lige en rettelse i mit script:

var goto:Array = new Array(26, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25);
var ml:LoadVars = new LoadVars();
ml.onLoad = function(success:Boolean):Void {
    if(success && this.m == 11 && this.d) {
        gotoAndStop(goto[this.d]);
    } else {
        gotoAndStop(goto[0]);
    }
}
ml.load("http://www.dinside.dk/php-side.php");
Avatar billede vat69 Nybegynder
24. november 2006 - 17:03 #11
Super! jeg er ikke ved den pc hvor mine filer ligger så kan først nok først prøve det mandag, men takker meget for hjælpen, jaeg kan evt lægge et spg i kan svare på på mandag så i kan få point for det sidste her også :)

jeg fordeler point efter det jeg skrev tidligere

Takker meget
Avatar billede maqhem Nybegynder
24. november 2006 - 17:43 #12
For mit vedkommende besvarede jeg ikke den sidste del for at få flere point, men blot for, at besvare dit spørgsmål helt.
Så for min skyld behøver du ikke at oprette et spørgsmål mere - du kunne i første omgang lige teste, om min kode overhovedet duer :)
Avatar billede vat69 Nybegynder
15. december 2006 - 11:12 #13
Hej jeg nåede aldrig at svare tilbage
Jeg nåede aldrig at lave en dato php-requestet, men jeg vuderede det var ok som det var (var lidt i tidspres)

Jeg har dog opdaget at hvis man ex. rydder sin browsers chash og readloader siden så er det lidt forskelligt hvilken frame den går til. Hvis jeg så opdater siden igen så virker den? Det er som om den tilfældigt tager en frame (eller dato om i vil) og går til. Hvis i stadig er derude er jeg naturligvis klar over at et svar eller løsning kræve point, jeg vil i så fald oprette et med de samme point som i denne tråd. Det kan også bare være det er sådan og der ikke kan gøres noget, men ville da lige spørge. Jeg har prøvet lidt forskelligt men kan ikke finde en fejl?

I får lige min flash kode på 1 frame (har 26 i alt) det kan være jeg har lavet en brøler i den:

var goto:Array = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25);
var nd:Date = new Date();
var d = nd.getDate();

if(nd.getMonth() == 11 && d < 25) {
    gotoAndPlay(goto[d]);
} else {
  gotoAndStop(goto[0]);
}
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