Flash: interrompere lo scroll

Di: Gwanìm | 26/09/2020 18:42:15
Ciao a tutti!
Ho un campo di testo a cui sono assegnati due pulsanti di scroll, scrollUp_btn e scrollDown_btn.
Avrei intenzione di fare in modo che una volta premuto un pulsante, il testo continui lo scroll finché il tasto del mouse resta; il codice che ho utilizzato è:

function scrollup() {
my_txt.scroll=my_txt.scroll-1;
}
function scrolldown() {
my_txt.scroll=my_txt.scroll+1;
}
scrollUp_btn.onPress = function() {
upint=setInterval(scrollup,100);
}
scrollUp_btn.onRelease = function() {
clearInterval(upint);
}
scrollDown_btn.onPress = function() {
downint=setInterval(scrolldown,100);
}
scrollDown_btn.onRelease = function() {
clearInterval(downint);
}

Purtroppo scritto così il codice è sbagliato, in quanto se mi muovo col mouse tenendo premuto al di fuori dell'area attiva, lo scroll non si arresta ed è come se il pulsante restasse sempre premuto, anche se successivamente uso l'altro.
Ho risolto parzialmente questo problema aggiungendo al codice:

scrollUp_btn.onReleaseOutside = function() {
clearInterval(upint);
}
scrollDown_btn.onReleaseOutside = function() {
clearInterval(downint);
}

Questo permette di arrestare lo scroll se rilascio il tasto del mouse anche al di fuori dell'area attiva e potrebbe andare bene...
Purtroppo quello che non riesco a trovare è un comando che interrompa lo scroll una volta uscito dall'area attiva del pulsante (anche se il tasto del mouse resta premuto). Ho provato con le funzioni onRollOut, ma non ho avuto successo.
Grazie per l'attenzione!

Risposte



Ciao Gwanìm,
la parola che stai cercando è onDragOut, ovvero “quando esco dall’area sensibile anche se il pulsante sinistro è ancora premuto”.
Inoltre ti consiglio di usare lo stesso Interval sia quando scrolli verso l’alto che quando scrolli verso il basso,eviti che due intervalli si accavallino e puoi usare un solo comando per interromperlo.
Ultima cosa... se due o più eventi devono richiamare lo stesso comando li puoi mettere sulla stessa riga, cioé invece di scrivere:
mc.onRelease = function() {.......};
mc.onDragOut = function() {.......};

puoi scrivere:
mc.onRelease = mc.onDragOut = function() {.......};
Ed ecco una possibile soluzione:
function scrollup() {
my_txt.scroll -= 1;
}
function scrolldown() {
my_txt.scroll += 1;
}
scrollUp_btn.onPress = function() {
scrint = setInterval(scrollup, 100);
};
scrollDown_btn.onPress = function() {
scrint = setInterval(scrolldown, 100);
};
scrollUp_btn.onRelease = scrollUp_btn.onDragOut=scrollDown_btn.onRelease=scrollDown_btn.onDragOut=function () {
clearInterval(scrint);
};

Di: Professore | 26/09/2020 18:42:15


Grande, grazie mille, ci ho perso le notti dietro e poi (dopo che me l'hai detto) mi sono anche accorto che era lì sotto il mio naso, nell'help di Flash, proprio 2 RIGHE sopra alla descrizione degli altri comandi ce ho usato... sono un'idiota...
Grazie per il consiglio per compattare la forma del mio codice, vado subito ad implementarlo!!!

Di: Gwanìm | 26/09/2020 18:43:15