[ScrollBar Os Native Style v0.1]
var scrollBase:MovieClip = scrollBase_mc;
var scrollMask:MovieClip = scrollContentMask_mc;
var scrollContent:MovieClip = scrollContent_mc;
var scrollBarOriginX:Number = scrollBar.x;
var scrollBarOriginY:Number = scrollBar.y;
var scrollContentOriginY:Number = scrollContent.y;
var posY:Number;
var dragRectangle:Rectangle;
var nScrollContentHeight:Number = scrollContent.height;
var nMaskHeight:Number = scrollMask.height;
var nScrollBaseHeight:Number = scrollBase.height;
var nScrollBarHeight:Number;
if (nScrollContentHeight > nMaskHeight){
scrollBar.visible = true;
nScrollBarHeight = Math.floor(nScrollBaseHeight * nMaskHeight / nScrollContentHeight);
scrollBar.height = nScrollBarHeight;
scrollBar.buttonMode = true;
scrollBar.addEventListener(MouseEvent.MOUSE_DOWN, scrollBarMouseDownHandler);
scrollBase.addEventListener(MouseEvent.MOUSE_DOWN, scrollBaseMouseDownHandler);
stage.addEventListener(Event.ENTER_FRAME, stageEnterFrameHandler);
}else{
scrollBar.visible = false;
}
function scrollBarMouseDownHandler(evt:MouseEvent):void{
dragRectangle = new Rectangle(scrollBarOriginX, scrollBarOriginY, 0, nScrollBaseHeight - nScrollBarHeight);
evt.currentTarget.startDrag(false, dragRectangle);
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
}
function stageMouseUpHandler(evt:Event):void {
scrollBar.stopDrag();
stage.removeEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
}
function scrollBaseMouseDownHandler(evt:MouseEvent):void{
if(scrollBar.y >= mouseY){
if(scrollContent.y < scrollContentOriginY){
if (nMaskHeight >= -scrollContent.y){
posY = scrollContentOriginY;
}else{
posY = scrollContent.y + nMaskHeight;
}
}
}
else if (nScrollContentHeight - nMaskHeight + (scrollContent.y - scrollContentOriginY) - nMaskHeight <= 0){
posY = scrollContentOriginY - nScrollContentHeight + nMaskHeight;
}else{
posY = scrollContent.y - nMaskHeight;
}
scrollBar.y = Math.round((scrollContentOriginY - posY) / (nScrollContentHeight - nMaskHeight) * (nScrollBaseHeight - nScrollBarHeight) + scrollBarOriginY);
}
function stageEnterFrameHandler(evt:Event):void{
posY = Math.round(scrollContentOriginY-(nScrollContentHeight - nMaskHeight) * (scrollBar.y - scrollBarOriginY) / (nScrollBaseHeight - nScrollBarHeight) );
scrollContent.y += (posY - scrollContent.y) * .4;
}
