Visualizzazione dei risultati da 1 a 9 su 9

Discussione: STOP e PLAY js

  1. #1

    STOP e PLAY js

    Salve ragazzi, ho una domanda veloce da porvi.

    Mettiamo di avere su di una pagina html due pulsanti play e stop. Il pulsante play fa partire un ciclo for, il pulsante stop dovrebbe fermare questo ciclo o qualcosa del genere. Il problema sta nel fatto che una volta premuto play, finchè il ciclo non termina, non posso premere nessun'altro pulsante all'interno della pagina, in che modo è possibile risolvere questo problema. Mi servono delle dritte. Non sono molto esperto su questo tema. Grazie!

  2. #2
    up

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Hai provato ad associare all'evento onclick del tasto "STOP" un semplice window.stop()?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    una volta che premo il tasto di play, tutti gli altri bottoni non sono cliccabili, è come se deve necessariamente finire l'azione provocata dal tasto start prima di poter passare a cliccare un altro tasto.

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Strano, sicuro* che il ciclo funzioni correttamente e che non impalli in browser eseguendo un ciclo infinito? O che non stai usando una libreria/framework tipo jquery che blocca il documento?



    *Per sicurezza intendo che hai eseguito tutte le verifiche è hai l'assoluta certezza del corretto funzionamento, non credo di si, altrimenti si perde il tempo entrambi
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  6. #6
    praticamente (in modo da esporre meglio il problema) una volta che premo il tasto play, una sfera inizia a muoversi all'interno di una finestra x3d. Il mio compito è quella di fermarla se premo il tasto stop.
    In pratica se premo play, ho messo un ciclo for che imposta l'attributo traslation, se premo stop dovrebbe fermarlo in quella posizione. Il fatto è che che finche non finisce quel ciclo, cioè finchè la sfera non finisce di muoversi, il tasto stop non posso premerlo.

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    530

    recoursion and timing

    L' unica cosa per sospendere un ciclo for in corso di esecuzione, è di metterci in mezzo un alert() che ti vedrai saltar su a chiedere Ok ad ogni "colpo" del for.

    Questo perché gli alert, prompt e confirm giocano ad un livello "più profondo" nel software del browser.
    Difficilmente si potrebbe ottenere un controllo analogo da un type="button" credo.

    Per realizzare quello che intendi ottenere, abbandonerei il loop for e mi baserei sulla ricorsione: una funzione che richiama se stessa.
    Il richiamo lo possiamo differire con un setTimeout() (temporizzatore).
    Prova questo modellino:
    codice:
    <html><head><title>sliding div</title>
    
    <script type="text/javascript">
    
    var mL = 0;
    
    function moveR(){
       mL = mL + 4; //numero di pixel in aggiunta
        document.getElementById("thing").style.marginLeft = mL + "px";
    
       TimerLeft = setTimeout('moveR();', 100); //in milli-secondi
     };
    
    
    function rest(){
       
       clearTimeout(TimerLeft);
     };
    
    </script>
    
    </head><body>
    
    <div id="thing" style="width: 100px; height: 50px; border: 1px solid red;"></div>
    <hr>
    <input value="move right" type="button" onclick="moveR()">
    <input value="stop"       type="button" onclick="rest();">
    
    </body></html>
    Insorgerà una problematica (prevista) se clicchi ripetutamente ...

  8. #8

    Re: recoursion and timing

    Originariamente inviato da Enzaccio
    L' unica cosa per sospendere un ciclo for in corso di esecuzione, è di metterci in mezzo un alert() che ti vedrai saltar su a chiedere Ok ad ogni "colpo" del for.

    Questo perché gli alert, prompt e confirm giocano ad un livello "più profondo" nel software del browser.
    Difficilmente si potrebbe ottenere un controllo analogo da un type="button" credo.

    Per realizzare quello che intendi ottenere, abbandonerei il loop for e mi baserei sulla ricorsione: una funzione che richiama se stessa.
    Il richiamo lo possiamo differire con un setTimeout() (temporizzatore).
    Prova questo modellino:
    codice:
    <html><head><title>sliding div</title>
    
    <script type="text/javascript">
    
    var mL = 0;
    
    function moveR(){
       mL = mL + 4; //numero di pixel in aggiunta
        document.getElementById("thing").style.marginLeft = mL + "px";
    
       TimerLeft = setTimeout('moveR();', 100); //in milli-secondi
     };
    
    
    function rest(){
       
       clearTimeout(TimerLeft);
     };
    
    </script>
    
    </head><body>
    
    <div id="thing" style="width: 100px; height: 50px; border: 1px solid red;"></div>
    <hr>
    <input value="move right" type="button" onclick="moveR()">
    <input value="stop"       type="button" onclick="rest();">
    
    </body></html>
    Insorgerà una problematica (prevista) se clicchi ripetutamente ...
    Beh, per ovviare alla problematica basterebbe aggiungere quesot prima del setTimout:
    if ( TimerLeft != undefined && TimerLeft != null ) clearTimeout ( TimerLeft ) ;
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  9. #9
    grazie a tutti! Ora ho risolto con la funzione ricorsiva! Grazie ancora.

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.