JavascriptProva

giovedì 12 gennaio 2012

Funzioni per il movimento di un oggetto e per fermarlo

Ho qualche problema con la funzione muovi().
Volevo porre dei limiti al movimento, ma non mi riesce, perchè il setInterval è incapsulato nella funzione muovi().
Se introduco un comando per avviare nuovamente muovi() con uno spostamento negativo, la nuova ripetizione della funzione non sostituisce, ma si sovrappone alla prima, e il movimento diventa complesso in quanto risulta dalla fusione fra le due chiamate della funzione.

Cerco di ovviare al problema. Dovrei forse introdurre un clearInterval per sopprimere le ripetizioni della funzione precedente prima di settare un nuovo intervallo per la ripetizione del movimento in un'altra direzione.

Ecco: ho creato l'antagonista della funzione muovi(), che si chiama ferma().
var intMuovi;
function step(oggetto,incX,incY)
{
 
 var sinistra=oggetto.style.left;
  var numSinistra = Number(sinistra.replace("px",""));

 var alto=oggetto.style.top;
 var numAlto=Number(alto.replace("px",""));

 
 oggetto.style.left=numSinistra+incX;

 oggetto.style.top=numAlto+incY;
}




function muovi(oggetto,incX,incY,tempo)
{
 intMuovi=setInterval(function() {step(oggetto, incX, incY)},tempo);
}

function ferma()
{
 clearInterval(intMuovi);
}
Ho dovuto creare la variabile globale intMuovi per ragioni di visibilità fra funzioni, perchè una variabile dichiarata all'interno di una funzione non risulta visibile dalle altre.
Con questa funzione posso cercare di porre dei limiti al movimento...

Nessun commento:

Posta un commento