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;
}
}
}