# Kirupa Scrollbar AS3.0

**URL:** <https://forum.kirupa.com/t/kirupa-scrollbar-as3-0/239484>\
**Category:** flash\
**Created:** [September 22, 2007, 8:54am UTC](https://forum.kirupa.com/t/kirupa-scrollbar-as3-0/239484 "2007-09-22T08:54:20Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![kbd](https://avatars.discourse-cdn.com/v4/letter/k/e99b99/32.png) [@kbd](https://forum.kirupa.com/u/kbd)\
**Post date:** [September 22, 2007, 8:54am UTC](https://forum.kirupa.com/t/kirupa-scrollbar-as3-0/239484/1 "2007-09-22T08:54:20Z")

</div>

Hello,  
I have converted a version of the world famous Kirupa scrollbar from AS2.0 to AS3.0. It mysteriously works. However I have a funny feeling that this is really messed up from an AS 3.0 point of view. So I have a few questions…

1. When you drag out of the scroller everything stops. I’m having a hard time figuring out how to handle this? Literally and figuratively.
2. It’s kicking out this error:

ReferenceError: Error #1065: Variable event is not defined.  
at MethodInfo-14()  
at scroller\_fla::MainTimeline/scroller\_fla::frame1()

I have no clue what this error means or how to stop it.

1. Calling the variable “right” into the RECTANGLE ( object?) makes the dragger go insane. What am I missing?

Any help would be greatly appreciated.

Here is my glorious code:

```auto
scrolling = function (){
    var moveSpeed:Number = 1;
    var scrollHeight:Number = scrollbg.height;
    // how much of the movie can be scrolled
    var scrollable:Number = contentMain.height-maskedView.height;
    var initContentPos:Number = contentMain.y;
    // the drag positions that are possible for the dragger
    
    var left:Number = scrollbg.x;
    var top:Number = scrollbg.y;
    var right:Number = scrollbg.x;
    var bottom:Number = scrollbg.height-dragger.height+scrollbg.y;
    
    var rect1:Rectangle = new Rectangle(left,top,0,bottom);
    //var myBounds=(left,top,right,bottom);
    
    // make sure the content scrollable, if it isn't hide everything and return
    if (scrollable < 0)
    {
        dragger.visible = false;
        btnUp.enabled = false;
        btnUp.alpha = 50;
        btnDown.alpha = 50;
        scrollbg.alpha = 50;
        btnDown.enabled = false;
        return;
    }
    // Updates the contents position
    function updateContentPos(){
        var percent_scrolled:Number = (dragger.y-btnUp.height)/(scrollHeight-dragger.height);
        contentMain.y = Math.round(initContentPos-(percent_scrolled*scrollable));
    }

////////////////LISTENERS///////////////////////////////
dragger.addEventListener(MouseEvent.MOUSE_DOWN, pressDragger);
dragger.addEventListener(MouseEvent.MOUSE_UP, upDragger);
dragger.addEventListener(MouseEvent.MOUSE_MOVE, moveDragger);
dragger.addEventListener(MouseEvent.MOUSE_OUT, outDragger);

btnDown.addEventListener(MouseEvent.MOUSE_DOWN, pressbtnDown);
btnDown.addEventListener(MouseEvent.MOUSE_OUT, dragOutbtnDown);
btnDown.addEventListener(MouseEvent.MOUSE_UP, releasebtnDown);

btnUp.addEventListener(MouseEvent.MOUSE_DOWN, pressbtnUp);
btnUp.addEventListener(MouseEvent.MOUSE_OUT, dragOutbtnUp);
btnUp.addEventListener(MouseEvent.MOUSE_UP, releasebtnUp);
btnUp.addEventListener(event.ENTER_FRAME, pressbtnUp);

//////////BUTTONS BEGIN HERE//////////////////////////////
    
    
function pressDragger(event:MouseEvent):void {
        dragger.startDrag(false,rect1);// NEED TO CONSTRAIN TO scrollbg HEIGHT
        updateContentPos();
    }
    
function moveDragger(event:MouseEvent):void {    
    
            updateContentPos();
}

function upDragger(event:MouseEvent):void {
    updateContentPos();
        stopDrag();
    };

function outDragger(event:MouseEvent):void {
    updateContentPos();
        stopDrag();
    };

///////////////////////////////////////////////////////////
    
function pressbtnUp(event:MouseEvent):void {
addEventListener(Event.ENTER_FRAME,moveDraggerUp);
};

function moveDraggerUp(event:Event):void{
    dragger.y = Math.max(top, dragger.y-moveSpeed);
            updateContentPos();
};

    
function dragOutbtnUp(event:MouseEvent):void {
        removeEventListener(Event.ENTER_FRAME,moveDraggerUp);
        updateContentPos();
    };
    
    
function releasebtnUp(event:MouseEvent):void {
        removeEventListener(Event.ENTER_FRAME,moveDraggerUp);
        updateContentPos();
    };

///////////////////////////////////////////////////////////
    
function pressbtnDown(event:MouseEvent):void {
        addEventListener(Event.ENTER_FRAME,moveDraggerDown);
        //trace("button down pressed");    
        };
    
function moveDraggerDown(event:Event):void{
    dragger.y = Math.min(bottom, dragger.y+moveSpeed);
    updateContentPos();
    };
    
function dragOutbtnDown(event:MouseEvent):void {
        removeEventListener(Event.ENTER_FRAME,moveDraggerDown);
        //trace("MOUSE OUT");    
    };
    
function releasebtnDown(event:MouseEvent):void {
        removeEventListener(Event.ENTER_FRAME,moveDraggerDown);
        //trace("button down RELEASED");    
    };

/////////////////////BUTTONS END HERE//////////////////////////////////

    updateContentPos();
}

scrolling();

```
