Es mi primer post aqui y espero que no el último ya sea para aprender o echar una mano en la medida de lo posible.
Hace unos días que también estuve posteando en otros foros tratando de encontrar solución (sin respuesta aún) a lo siguiente:
Tengo un scroll de este tipo:
http://www.mijostudio.com/scroll/scroll.swf
Hecho a partir de un magnífico scroll (a mi parecer) que encontré buscando tutoriales por la web. Está modificado para que pueda moverse con la rueda del ratón y lleva, dentro del contenido un botón para, a modo de comprobación, ver como se actualiza cuando aparece nuevo texto de golpe.
Solo hay un problemilla, el famoso easing. No sé en que se diferencia exactamente en el código (no soy experto en AS) con otros modos de desaceleración con easing que he visto. Pero por mucho que trate de modificar la variable velocidad no obtengo el resultado que quiero: un easing más fino, más suave o mejor dicho que "provoque" una desaceleración/aceleración más progresiva y lenta (como píxel a píxel).
Aquí os dejo el código por si queréis echarle un vistazo:
Código actionscript:
Muchísimas gracias por la paciencia!Ver original
function scrollUpdate() { var contenido = this._parent.contenido; if (contenido._height<this.bg._height) { this._visible = false; } else { this._visible = true; } var pxls_cont = contenido._height-this.bg._height; var pxls_scroll = this.bg._height-this.barra._height; var alfa = pxls_cont/pxls_scroll; var vel = 2; var desty = -this.barra._y*alfa+this.hxini; desty = Math.floor(desty); contenido._y = Math.floor((contenido._y*vel+desty)/(vel+1)); } function startScroll() { yfin = this._parent.bg._height-this._height; this.startDrag("", this._x, 0, this._x, yfin); } function stopScroll() { this.stopDrag(); } function moveScroll(dir) { if (dir == "stop") { delete controlador["onEnterFrame"]; } else { var barra = this.barra; var vel = 4; if (dir == "arriba") { var lim = 0; vel = vel*-1; } else { var lim = this.bg._height-barra._height; } } controlador.onEnterFrame = function() { if (dir == "abajo") { if (barra._y+vel<lim) { barra._y = barra._y+vel; } else { barra._y = lim; } } else if (barra._y+vel>lim) { barra._y = barra._y+vel; } else { barra._y = lim; } }; } var wheel:Object = new Object(); wheel.onMouseWheel = function(incressment):Void { barra._y -= incressment*5; if (barra._y>190) { barra._y = 190; } if (barra._y<0) { barra._y = 0; } }; Mouse.addListener(wheel); this.hxini = this._parent.contenido._y; this.onEnterFrame = scrollUpdate; this.barra.onPress = startScroll; this.barra.onRelease = stopScroll; this.barra.onReleaseOutside = stopScroll; this.createEmptyMovieClip("controlador", 100); sup.onPress = function() { moveScroll("arriba"); }; sup.onRelease = inf.onRelease=function () { moveScroll("stop"); }; inf.onPress = function() { moveScroll("abajo"); }; inf.onRelease = function() { moveScroll("stop"); }; barra.useHandCursor = false; sup.useHandCursor = false; inf.useHandCursor = false;
Saludos!!