Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di darrel
    Registrato dal
    Aug 2002
    Messaggi
    129

    gotoAndStop in base all'orario

    Salve a tutti,
    sto realizzando un sito per una radio e volevo mettere nella testata il programma in onda in quel momento...
    Naturalmente creo l'oggetto orario e poi...

    if (h>=1 and h<=4 and min<=59) {
    programmi.gotoAndStop(2);

    }
    else if (h>=5 and h<=6 and min<=59) {
    programmi.gotoAndStop(3);

    }
    else if (h>=7 and h<=9 and min<=59) {
    programmi.gotoAndStop(4);

    }

    else if (h>=10 and h<=12 and min<=30) {
    programmi.gotoAndStop(5);

    }

    else if(h>=12 and min>=31 and h<=13 and min<=30) {
    programmi.gotoAndStop(6);

    }
    else if(h>=13 and min>=31 and h<=14 and min<=30) {
    programmi.gotoAndStop(7);

    }
    else if(h>=14 and min>=31 and h<=15 and min<=30) {
    programmi.gotoAndStop(8);

    }
    fino ad un certo punto ha funzionato ma ora non mi funziona più...sto facendo le prove cambiando l'orario di sistema...
    ho notato che funziona fino alle 12 , quando metto le 13:20 non funziona....
    che cosa sbaglio????
    E tu saprai che il mio è il nome del Signore...
    quando farò calare la mia vendetta sopra di te!!!

  2. #2

  3. #3
    Utente di HTML.it L'avatar di darrel
    Registrato dal
    Aug 2002
    Messaggi
    129
    l'Oggetto orario è cosi
    orario = new Date();
    sec = orario.getSeconds();
    min = orario.getMinutes();
    h = orario.getHours();

    ma il problema secondo me è nel fare la differenza tra i minuti perchè se nella riga

    else if(h>=12 and min>=31 and h<=13 and min<=30) {
    programmi.gotoAndStop(6);

    }

    tolgo l'ultimo and min<=30 funziona, solo che come faccio a dirgli che il programma dura dalle 12:30 alle 13:30???
    E tu saprai che il mio è il nome del Signore...
    quando farò calare la mia vendetta sopra di te!!!

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao

    A parte il problema dopo le 12, secondo me tutte quelle condizioni sono un po' ridondanti..
    Si potrebbe ottimizzare il tutto in modo da rendere più semplice anche la gestione dei vari periodi di tempo..

    Provo a buttare giù qualcosa..
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Vabbè.. lasciamo perdere l'ottimizzazione .. ho trovato l'errore.

    Nelle ultime 3 condizioni ci sono delle regole che annullano la verifica..
    La condizione non potrà mai essere verificata se:
    codice:
    min>=31 and min<=30
    In pratica stai dicendo che min deve essere maggiore di 31 e contemporaneamente minore di 30... come pretendi che funzioni..

    Per risolvere devi prima separare le due coppie, di cui ognuna formata dai due termini (h, min).
    Per cui, con un operatore and, confronti i valori dei termini di ogni coppia separatamente.. poi confronti le due coppie con un operatore or..
    codice:
    if (h>=1 and h<=4 and min<=59) {
    	programmi.gotoAndStop(2);
    } else if (h>=5 and h<=6 and min<=59) {
    	programmi.gotoAndStop(3);
    } else if (h>=7 and h<=9 and min<=59) {
    	programmi.gotoAndStop(4);
    } else if (h>=10 and h<=12 and min<=30) {
    	programmi.gotoAndStop(5);
    } else if ((h>=12 and min>=31) or (h<=13 and min<=30)) {
    	programmi.gotoAndStop(6);
    } else if ((h>=13 and min>=31) or (h<=14 and min<=30)) {
    	programmi.gotoAndStop(7);
    } else if ((h>=14 and min>=31) or (h<=15 and min<=30)) {
    	programmi.gotoAndStop(8);
    }
    Nelle prime tre condizioni il problema non sussiste perché per entrambe le coppie stai imponendo la condizione min<=59 che ovviamente dichiari una sola volta.

    In realtà l'operatore or dovrebbe verificare tutte e 3 le ultime condizioni.. ad esempio se il valore di h è <=13 e min è <=30.. ma in questo caso avrà priorità la condizione che viene verificata per prima..

    Tieni conto che lo script potrebbe essere ottimizzato ma dal momento che in questo modo funziona, lo puoi tenere così..

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Utente di HTML.it L'avatar di darrel
    Registrato dal
    Aug 2002
    Messaggi
    129
    grande KillerWorm!!!!!!
    immaginavo che ci volesse OR ma non avevo ben chiaro come inserirlo.....
    Grazie Mille!!!!!
    se posso approfittare....che intendi per ottimizzare il codice?
    E tu saprai che il mio è il nome del Signore...
    quando farò calare la mia vendetta sopra di te!!!

  7. #7
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Per ottimizzare, io avrei inserito gli orari in un array, in modo da avere una gestione più semplice..
    Quindi avrei risolto con un ciclo for e un'unica condizione..

    Ma se il tutto deve rimanere statico puoi lasciare pure così..
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  8. #8
    Utente di HTML.it L'avatar di darrel
    Registrato dal
    Aug 2002
    Messaggi
    129
    Mi sa che dovrei fare cosi perchè alcuni orari non li prende tipo 14:32
    se metto ore 15:00 passa al fotogramma 8 con 14:32 o 14:42 resta al 7
    Ma come mai???
    Avanti killer fai st'altro sforzo che poi ti offro da bere...
    E tu saprai che il mio è il nome del Signore...
    quando farò calare la mia vendetta sopra di te!!!

  9. #9
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Sì.. hai ragione..

    Gli operatori 'or' in quel modo fanno le bizze


    Vabbè.. provo a rivederlo un po'..
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Eccoci..
    Rimpiazza il vecchio sistema con questo script:
    Codice PHP:
    // tabella orari: inserire gli orari, o i periodi di tempo, in ordine temporale crescente
    // Se non specificati, i periodi saranno calcolati tra una voce e quella seguente.
    // Nell'ultima voce è necessario specificare un periodo esatto per determinarne la fine.
    var tab:Array = new Array("1:00""5:00""7:00""10:00""12:30""13:30""14:30-15:30");
    //
    var oraDate = new Date();
    var 
    inizDate = new Date();
    var 
    fineDate = new Date();
    function 
    getAtr(arr:Array, id1:Numberid2:Number):Number {
        var 
    val:Number Number(arr[id1].split(":"3)[id2]);
        (
    isNaN(val)) && (val=0);
        return 
    val;
    }
    for (var 
    id in tab) {
        var 
    rng:Array = tab[id].split("-"2);
        (
    rng.length == && id<tab.length) && (rng.push(tab[Number(id)+1].split("-"1)[0]));
        
    iniz.setHours(getAtr(rng00));
        
    iniz.setMinutes(getAtr(rng01));
        
    iniz.setSeconds(getAtr(rng02));
        
    fine.setHours(getAtr(rng10));
        
    fine.setMinutes(getAtr(rng11));
        
    fine.setSeconds(getAtr(rng12));
        if (
    ora>=iniz && ora<fine) {
            
    programmi.gotoAndStop(Number(id)+2);
            break;
        }

    Non ho commentato lo script tranne la prima riga dove ho indicato come impostare la tabella degli orari..
    Spero funzioni.. fai diverse prove..
    Se trovi difficoltà o vuoi sapere a cosa servono e come funzionano determinate parti dello script, fammi sapere..

    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.