Clase para crear scroll con easing en Actionscript 3.0
Esta es una clase para crear un scroll con easing en Actionscript 3.0. Hay que pasarle los siguientes parámetros:
- Clip que queremos controlar con el scroll
- Posición x del Scroll
- Posición y del scroll
- Ancho del scroll
- Altura del scroll (será el alto de la máscara
- Color de la barra grande
- Color de la barra de arrastre
- Color de los contornos de las barras
Por supuesto es mejorable, se admiten comentarios en contacto@esedeerre.com.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
package{ import flash.display.*; import flash.events.*; import flash.geom.Rectangle; public class Scroll extends Sprite{ var alto:Number; var separacion:Number = 10; var ancho:Number; var recorrido:Number; var clip:MovieClip; //Función constructora public function Scroll(mc:MovieClip,posx:Number,posy:Number,anc:Number,alt:Number,color1:uint,color2:uint,color3):void { clip = mc; alto = alt; ancho = anc; recorrido = 7*alto/8; x = clip.x - ancho - separacion; y = clip.y; CrearBarra("Barra_mc",ancho,alto,color1,color3); CrearBarra("Barrita_mc",ancho,alto/8,color2,color3); PonerMascara(clip); getChildByName("Barrita_mc").addEventListener(MouseEvent.MOUSE_DOWN,Arrastrar); getChildByName("Barrita_mc").addEventListener(MouseEvent.MOUSE_UP,Soltar); getChildByName("Barrita_mc").addEventListener(MouseEvent.MOUSE_OUT,Soltar); addEventListener(Event.ENTER_FRAME,Colocar); } //Crea una barra y la añade al escenario private function CrearBarra(nombre:String,ancho:Number,alto:Number,color:uint,colormarco:uint):void { var hijo:Sprite = new Sprite(); hijo.name = nombre; hijo.graphics.beginFill(color); hijo.graphics.lineStyle(0.1, colormarco); hijo.graphics.drawRect(0, 0, ancho, alto); hijo.graphics.endFill(); addChild(hijo); } //Arrastra la barrita de arrastre private function Arrastrar(e:MouseEvent):void{ var mc:Sprite = e.target as Sprite; mc.startDrag(false,new Rectangle(0,0,0,alto-mc.height)); } //Suelta la barrita de arrastre private function Soltar(e:MouseEvent):void{ e.target.stopDrag(); } //Dibuja un rectángulo y lo coloca como máscara del clip sobre el que queremos hacer //croll private function PonerMascara(mc:MovieClip):void{ var mascara:Sprite = new Sprite(); mascara.graphics.beginFill(0x000000); mascara.graphics.lineStyle(1, 0x000000); mascara.graphics.drawRect(0, 0, mc.width, alto); mascara.graphics.endFill(); mascara.x = separacion + ancho; mc.mask = mascara; addChild(mascara); } //Función que mueve el clip cuando hacemos scroll private function Colocar(e:Event):void{ var porcentaje = 1 - (Math.round(recorrido - getChildByName("Barrita_mc").y))/recorrido; var fin = -((clip.height - alto) * porcentaje - y); clip.y += (fin - clip.y)/10; } } } |
COMENTARIOS
Tu scroll tiene el mismo problema que tenia el mio, al presionar y hacer «releaseOutSide», deja de funcionar cuando un scroll real sigue funcionando, opte por usar ENTER_FRAME y detectar los diferentes eventos y mover enves de usar startDrag
Tambien note que si arrastras muy rapido hacia arriba ó abajo deja de funcionar el startDrag
El problema no es la velocidad, el problema es que cuando detecta que se ha salido el mouse de los limites de la barra en posicion X ya el efecto de scroll no funciona.
muy buenos los ejemplos lo impotamte es que son bastante claros
bnnnnnn
Soy novata en esto, perdon por la pregunta pero como le cambio el color del outline a la barra grande?
Pues bien como te comentaba, mi galeria de iamgen thumbs es vertical, dentro de un sprite, lo que estoy realizando es esto adaptado a la clase tuya.
var scrolls:Scroll = new Scroll (main_container2(contenedor mencionado), thumbs_y, thumbs_x, 30, 200, 250, 128, 114);
main_container2(contenedor mencionado).addChild (scrolls);
fijate que en la clase en vez de ser MovieClip coloque que fuera el sprite.
Gracias por tu ayuda
Estimado
queria consularte si esta funcion me permite controlar un Sprite, concretamente una galeria de videos vertical, la cual quiero alinearla en dicho contenedor «Sprite», para posteriormente controlarla por un scrollbar.
agradecido por las sugerencias que me puedas facilitar
oye que machera de pagina, eres un Duro gracias por compartir y ayudarme a salir de la ignorancia DIOS te bendiga.
////Jesenia
mira tienes que abrir en archivo flv que descargaste:
1.en la linea de tiempo hay 2 capas 1 que contiene el MovieClip del texto y otra que es AS de acciones…
2.te ubicas en el fotograma 1 de la capa de Acciones abres el panel de acciones.»como abres el panel de acciones? le das click en ventana la parte superior de flash y buscas acciones o le das f9″
3.despues de darle click te aparece este codigo :
var barra = new Scroll(Clip_mc,100,100,20,360,0xffcc00,0x666666,0x000000);
addChild(barra);
stop();
0xffcc00 : color amarillo de el fondo del scroll
0x666666 : color gris del scroll
0x000000 : color negro del borde
si quieres cambiar el color de cualquiera solo tienes que saber como se llama tu color en el codigo:
para saber como se llama el color te vas a panel de herramientas y le das click en el bote de pintura abres la lista de colores pornes el mouse sobre el color que quieras y en la parte superior de la lista de colores aparece un codico: por ejemplo el color negro de la parte izquierda..
Negro = #000000
entonces si quieres cambiar el color del fondo a negro quitas el 0xffcc00 del codigo y lo cambias por este 0x000000
siempre se trabaja 0x y el color que quieres…
espero que lo humilde que se te halla servido .
DIOS te bendiga
Porqué cuando cambio el scroll a la parte derecha del clip me desaparece? Pongo el punto de registro del clip arriba-derecha y me desaparece. ¿Alguién sabe el porqué? Gracias por el scroll.
DEJA TU COMENTARIO