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.