So I just found this code from somewhere here on the forums, it’s a AS3 version of the tutorial found here on this website.
//based on the Kirupa's great original code and new "migratingFromAs2" altern paths by Senocular // traduced to as3 by sightNoise
var scrollHeight:Number = scrollTrk.height;
var contentHeight:Number = contentMain.height;
var scrollFaceHeight:Number = scrollFace.height;
var maskHeight:Number = maskedView.height;
var initPosition:Number = scrollFace.y=scrollTrk.y;
var initContentPos:Number = contentMain.y;
var finalContentPos:Number = maskHeight-contentHeight+initContentPos;
var left:Number = scrollTrk.x;
var top:Number = scrollTrk.y;
var right:Number = 0;
var bottom:Number = scrollTrk.height-scrollFaceHeight;
var bottom2:Number = scrollTrk.height-scrollFaceHeight+scrollTrk.y;
var dy:Number = 0;
var speed:Number = 20;
var moveVal:Number = (contentHeight-maskHeight)/(scrollHeight-scrollFaceHeight);
var currPos:Number;
var rect1:Rectangle = new Rectangle(left,top,right,bottom)
//+++++++++++++++++++++++++++++++++++++LISTENERS*****************************************//
scrollFace.addEventListener(MouseEvent.MOUSE_DOWN, scrollMouseDown)
scrollFace.addEventListener(MouseEvent.MOUSE_UP, scrollMouseUp)
btnUp.addEventListener(MouseEvent.MOUSE_DOWN, btnUpPress)
btnUp.addEventListener(MouseEvent.MOUSE_UP, btnUpRelease)
btnUp.addEventListener(MouseEvent.MOUSE_OUT, btnUpOut)
btnDown.addEventListener(MouseEvent.MOUSE_DOWN, btnDownPress)
btnDown.addEventListener(MouseEvent.MOUSE_UP, btnDownRelease)
btnDown.addEventListener(MouseEvent.MOUSE_OUT, btnDownOut)
addEventListener(MouseEvent.MOUSE_WHEEL, wheelScroll)
//+++++++++++++++++++++++++++++++++++++LISTENERS*****************************************//
function scrollMouseDown(event:MouseEvent) {
currPos = this.scrollFace.y;
scrollFace.startDrag(false, rect1)
scrollFace.addEventListener(Event.ENTER_FRAME, scrollMove)
stage.addEventListener(MouseEvent.MOUSE_UP, releaseOut)
};
function scrollMove(event:Event) {
dy = Math.abs(initPosition-scrollFace.y);
contentMain.y = Math.round(dy*-1*moveVal+initContentPos);
};
function scrollMouseUp(event:MouseEvent) {
scrollFace.stopDrag();
scrollFace.removeEventListener(Event.ENTER_FRAME, scrollMove)
};
function releaseOut(event:MouseEvent) {
if (event.target == scrollFace){
//if onRelease use MouseEvent.MOUSE_UP instead
//check Senocular thread answer
//http://www.kirupa.com/forum/showthread.php?p=1948182#post1948182
}else{
//mouse is up outside the Clip(onReleaseOutside)
//Thanks to Senocular for figuring out this altern path to releaseOutside
scrollFace.stopDrag();
scrollFace.removeEventListener(Event.ENTER_FRAME, scrollMove)
}
stage.removeEventListener(MouseEvent.MOUSE_UP, releaseOut);
};
function btnUpPress(event:MouseEvent) {
btnUp.addEventListener(Event.ENTER_FRAME, btnUpEnterFrame)
};
function btnUpEnterFrame(event:Event) {
if (contentMain.y>=initContentPos ||scrollFace.y<=top){
scrollFace.y = top;
}else{
scrollFace.y -= speed/moveVal;
contentMain.y += speed;
}
};
function btnUpRelease(event:MouseEvent) {
btnUp.removeEventListener(Event.ENTER_FRAME, btnUpEnterFrame)
};
function btnUpOut(event:MouseEvent) {
btnUp.removeEventListener(Event.ENTER_FRAME, btnUpEnterFrame)
};
function btnDownPress(event:MouseEvent) {
btnDown.addEventListener(Event.ENTER_FRAME, btnDownEnterFrame)
}
function btnDownEnterFrame(event:Event) {
if (contentMain.y<=finalContentPos ||scrollFace.y>=bottom){
scrollFace.y = bottom2;
}else{
scrollFace.y += speed/moveVal;
contentMain.y -= speed;
}
};
function btnDownRelease(event:MouseEvent) {
btnDown.removeEventListener(Event.ENTER_FRAME, btnDownEnterFrame)
};
function btnDownOut(event:MouseEvent) {
btnDown.removeEventListener(Event.ENTER_FRAME, btnDownEnterFrame)
};
if (contentHeight<maskHeight) {
scrollFace.visible = false;
btnUp.enabled = false;
btnDown.enabled = false;
} else {
scrollFace.visible = true;
btnUp.enabled = true;
btnDown.enabled = true;
}
function wheelScroll(event:MouseEvent):void{
var sp= speed*2;
if(event.delta > 0){
if (contentMain.y>=initContentPos ||scrollFace.y<=top) {
scrollFace.y = top;
}
else {
scrollFace.y -= sp/moveVal;
contentMain.y += sp;
}
}
else {
if (contentMain.y<=finalContentPos ||scrollFace.y>=bottom) {
scrollFace.y = bottom2;
}
else{
scrollFace.y += sp/moveVal;
contentMain.y -= sp;
}
}}
What i’m looking for is a way to integrate this code or a similar type to work with dynamic content. Such as XML data loaded into a dynamic text field.
Any suggestions?
-mgh