Visualizzazione dei risultati da 1 a 4 su 4

Visualizzazione discussione

  1. #1
    Utente di HTML.it L'avatar di szz
    Registrato dal
    Sep 2014
    residenza
    Barcelona
    Messaggi
    5

    Gestione degli eventi - while(mousedown)

    Ciao a tutti,

    Anticipo che non sono un utente esperto in JavaScript , però mi trovo a dover risolvere un problema che non riesco a risolvere e spero mi possiate aiutare.

    Ho una immagine dichiarata cosi:

    codice HTML:
    <img id="protoImage" src="/path/to/img.png" onmousedown="tsMouseDown()" onmouseup="tsMouseUp()" onmouseout="tsMouseOut()" ondragstart='return false;'/>

    E finché il tasto del mouse è premuto, dovrei eseguire un timer e svolgere delle determinate funzioni una volta passati alcuni ms, per esempio mezzo secondo.

    Finora sono riuscito a scrivere questo codice:

    codice:
    var lastTime = 0;
    var now = 0;
    var tmptimer = 0;
    var loopFlag = false;
    var timeFlag = false;
    
    function tsMouseDown()
    {
      loopFlag = true;
      timeFlag = false;
    
      var div = document.getElementById("debugDiv");
      div.textContent = "tsMouseDown...";
    
      lastTime = new Date().getTime();
      var tmptimer = lastTime;
    
      while((loopFlag == true) && ((tmptimer - lastTime) <= 500))
      {
        tmptimer = new Date().getTime();
      }
    
      if((tmptimer - lastTime) >= 500)
      {
        timeFlag = true;
        div.textContent = "tsMouseDown ... 500 ms passed";
      }
    }
    
    function tsMouseUp()
    {
      loopFlag = false;
      var div = document.getElementById("debugDiv");
    
      now = new Date().getTime();
    
      if(timeFlag == false)
        div.textContent = "tsMouseUp: " + (now - lastTime) + "< 500 ms...";  
      else
        div.textContent = "tsMouseUp: " + (now - lastTime) + "> 500 ms...";
    }
    
    function tsMouseOut()
    {
      var div = document.getElementById("debugDiv");
      div.textContent = "tsMouseOut: 0";
    }

    Il problema sembra essere il ciclo while nella funzione tsMouseDown(), perché anche se il tasto del mouse viene rilasciato, il timer sempre sorpassa i 500 ms, come se il flag loopFlag non fosse settato a false...

    Purtroppo, date le mie scarse conoscenze in Javascript e Ajax, non sò come risolvere il problema..

    Ringrazio in anticipo.

    Ultima modifica di szz; 25-11-2014 a 19:02

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.