Flash Scrollbar v1



import gs.TweenMax;

var displayAreaWidth: int = 700;
var displayAreaHeight: int = 400;

var ui:MovieClip = ui;
var maskMc:MovieClip = ui.maskMc;
var contentMc:MovieClip = ui.contentMc;
var tracker:MovieClip = ui.scrollbarMc.scrollTrackerMc;
var track:MovieClip = ui.scrollbarMc.scrollTrackMc;
var scrollbarMc:MovieClip = ui.scrollbarMc;
var contentBg:MovieClip = ui.contentBg;

track.height = displayAreaHeight;
contentBg.width = displayAreaWidth;
contentBg.height = displayAreaHeight;
maskMc.x = maskMc.y =0;
maskMc.width = displayAreaWidth;
maskMc.height = displayAreaHeight;
scrollbarMc.x = displayAreaWidth;
scrollbarMc.y = 0;
scrollbarMc.width = 15;

var rect:Rectangle = new Rectangle(track.x,track.y,track.x,track.height - tracker.height);
var speed:Number = 20;
var rate:Number =( contentMc.height - maskMc.height) / (track.height - tracker.height);

if(contentMc.height > displayAreaHeight ) init();
else maskMc.visible = false, scrollbarMc.visible = false;

function init ():void
{
tracker.buttonMode = true;
contentMc.mask = maskMc;

tracker.addEventListener (MouseEvent.MOUSE_DOWN,onMouseDownTracker);
stage.addEventListener (MouseEvent.MOUSE_UP,onMouseUpTracker);
track.addEventListener ( MouseEvent.MOUSE_DOWN,onMouseDownTrack);
contentMc.addEventListener(MouseEvent.MOUSE_WHEEL,onMouseWheelHandle);
}

function moveContent (e:Event):void
{
TweenMax.to (contentMc, 1 ,{y:tracker.y * -rate});
}

function onMouseDownTracker (e:MouseEvent):void
{
e.target.startDrag (false,rect);
stage.addEventListener (Event.ENTER_FRAME,moveContent);
}

function onMouseUpTracker (e:MouseEvent):void
{
stopDrag ();
stage.removeEventListener (Event.ENTER_FRAME,moveContent);
}

function onMouseDownTrack (e:MouseEvent):void
{
var dy:Number = mouseY - ui.y - tracker.height;
if (dy > rect.height - tracker.height) dy = rect.height;
if (dy < tracker.height ) dy = rect.y;
//trace([dy, rect.height]);
TweenMax.to (tracker,1,{y:dy});
TweenMax.to (contentMc, 1 ,{y:dy * -rate});
}

function onMouseWheelHandle (e:MouseEvent):void
{
var upDown :int = Math.abs(e.delta)/e.delta;
var step = speed * upDown;
if(tracker.y > rect.height + step) tracker.y = rect.height + step;
else if (tracker.y < step ) tracker.y = step;
tracker.y -=step;
TweenMax.to (contentMc, 1 ,{y:tracker.y * -rate});
}

0 Comments:

Post a Comment

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More