PDA

View Full Version : Strano comportamento in Actionscript setInterval


zUmBo!
25-06-2007, 16:11
Salve a tutti, :D

ho creato un codice in Actionscript che mi permette di alzare l'altezza di un oggetto quando la coordinata X del mouse coincide con la coordinate x occupate dall'oggetto.

Ho creato anche il codice che abbassa l'altezza dell'oggetto nel caso le cooordinate non coincidessero più.

:( ora arriva la cosa strana:

queste 2 funzioni FUNZIONANO! ma una alla volta.

Se le richiamo tutte e 2 succede un macello, cioè la prima chiamata in causa funziona benissimo, la seconda da un errore, cioè cambia ripetutamente l'altezza dell'oggetto (effetto stroboscopica).

secondo voi, maghi di javascript/actionscript, dov'è l'inghippo?


questo funziona, e abbassa correttamente l'oggetto:
var target = this;
this._height=60;
onMouseMove = function () {
/*if ((target._xmouse>=-3) && (target._xmouse<=12)) {
target.IdAlza = setInterval(alza, 10, target);
clearInterval(target.idAbbassa);
}*/
if ((target._xmouse<-3) || (target._xmouse>12)) {
target.IdAbbassa = setInterval(abbassa, 50, target);
clearInterval(target.idAlza);
}


};
//FUNZIONI
function alza(target) {
if (target._height<60) {
target._height += 1;
}
}
function abbassa(target) {
if (target._height>6) {
target._height -= 1;
}
}


quest'altro funziona e alza l'oggetto
var target = this;
//this._height=60;
onMouseMove = function () {
if ((target._xmouse>=-3) && (target._xmouse<=12)) {
target.IdAlza = setInterval(alza, 10, target);
clearInterval(target.idAbbassa);
}
/*if ((target._xmouse<-3) || (target._xmouse>12)) {
target.IdAbbassa = setInterval(abbassa, 50, target);
clearInterval(target.idAlza);
}*/


};
//FUNZIONI
function alza(target) {
if (target._height<60) {
target._height += 1;
}
}
function abbassa(target) {
if (target._height>6) {
target._height -= 1;
}
}


attivando entrambe le funzioni succede il macello
var target = this;
//this._height=60;
onMouseMove = function () {
if ((target._xmouse>=-3) && (target._xmouse<=12)) {
target.IdAlza = setInterval(alza, 10, target);
clearInterval(target.idAbbassa);
}
if ((target._xmouse<-3) || (target._xmouse>12)) {
target.IdAbbassa = setInterval(abbassa, 50, target);
clearInterval(target.idAlza);
}


};
//FUNZIONI
function alza(target) {
if (target._height<60) {
target._height += 1;
}
}
function abbassa(target) {
if (target._height>6) {
target._height -= 1;
}
}

:D grazie in anticipo a tutti coloro che cercheranno di aiutarmi :D