Salve raga, sto realizzando una scrollbar che carico con un loadMovie e alla quale
passo il nome del movie che deve scrollare.
Fin qui tutto bene funzia a meraviglia.
Il mio problema è con lo scroll legato alla rotellina del mouse, riesco ad aggiungere il listener
quando uno clicca sul pulsante della barra, ma vorrei che se ci fosse un evento onReleaseOutside
venisse tolto il listener, ma questo na va via!
posto il codice commentato:
codice:
//premessa scrollbar è l'intera barra di scorrimento compreso lo sfondo
//mybar è il pulsante che viene trascinato e che è composto da + parti
//per quando viene ridimensionato
//barScroll è una variabile che creo all'inizio e mi serve ad avere un valore della
//y di una determinata barra qualora ci siano + barre
if(barScroll == undefined) barScroll= 0;
//mymovie è il movie di riferimento
//setto i valori per lo scrolling inviando l'altezza che deve avere l'intera barra di scorrimento
function setScrollBar(scrollbar_h, movie){
movie_h = movie._height;
movie_y = movie._y;
mybar_minw = 40; //setto l'altezza minima che può avere la barra (ancora non usato)
//tutti i valori sono basati sull'altezza da scrollare, se la scrollbar è alta 10 e il movie 17 la differenza (7) mi fornirà
//i valori sui quali basarmi
movie_diff = movie_h - scrollbar_h;
if(movie_diff>0){ //se la differenza è maggiore di zero deve funzionare la scrollbar
myscrollbar.back._height = scrollbar_h; //setto l'altezza allo sfondo
//l'altezza della barra è inversamente proporzionale all'altezza del movie se il movie è 2 volte l'altezza della scrollbar
//la barra è la metà, altezzabarra = altezzascrollbar/altezzamovie
resizeval = Math.floor(scrollbar_h*(scrollbar_h/movie_h));
//ridimensiono e posiziono le parti che compongono il pulsante mybar che viene draggato
myscrollbar.mybar.barsides._height = resizeval-3;
myscrollbar.mybar.bar._height = resizeval-1;
myscrollbar.mybar.barbottom._y = resizeval-3;
myscrollbar.mybar.barlines._y = (resizeval-9)/2;
//il rapporto fra pixel di scorrimento della bar e pixel di scorrimento del movie è dato dal rapporto
//fra l'eccesso di altezza del movie (movie_diff) e lo spazio rimasto (altezzascrollbar-altezzabarra)
rapp = movie_diff/(scrollbar_h - myscrollbar.mybar._height);
//dragging con valore
myscrollbar.mybar.onPress = function(){
this.startDrag(false, 0, 0, 0, (scrollbar_h - myscrollbar.mybar._height));
barScroll = myscrollbar.mybar._y;
var barListener:Object = new Object();
barListener.onMouseWheel = function(delta:Number) {
barScroll -= delta;
if(barScroll<0) barScroll = 0;
myscrollbar.mybar._y = barScroll;
}
Mouse.addListener(barListener);
}
myscrollbar.mybar.onRelease = myscrollbar.mybar.onReleaseOutside = function(){
this.stopDrag();
barScroll = this._y;
}
myscrollbar.mybar.onReleaseOutside = function(){
this.stopDrag();
barScroll = this._y;
Mouse.removeListener(barListener);
}
myscrollbar.mybar.onEnterFrame = function(){//se si sposta la barra si sposta il movie
movie._y = movie_y - this._y*rapp;
}
}
else { //se la differenza è minore di zero la scrollbar non serve
myscrollbar._visible = false;
}
}
setScrollBar(200, quad);
stop();
potete vedere l'esempio qui:
link