forked from: basic scrollBar

by noobdood forked from basic scrollBar (diff: 85)
♥0 | Line 128 | Modified 2011-03-14 23:19:46 | MIT License
play

ActionScript3 source code

/**
 * Copyright noobdood ( http://wonderfl.net/user/noobdood )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/3zON
 */

// forked from _ryotaros's basic scrollBar
package {
    import flash.display.Sprite;
    import flash.events.MouseEvent;
    import flash.events.Event;
    
    public class FlashTest extends Sprite {
            
            public var scrollArea:Box;
            public var scrollBar:Box;
            public var scrollBarshadow:Box;
            public var element:Box;
            public var elementArea:Sprite;
            public var elements:Array;
            
  
            public var bardist:Number;
            public var elementAreaDist:Number;
            public var targetDist:Number;
            public var ElementAreaLength:Number;
            public var scrollBarPoint:Number;
    
        public function FlashTest() {
            init();
        }
    
    public function _setupSection(type:String,name:String,elNum:int = 1):void {
        if(type != "entry") {
                  element = new Box(0,0,scrollArea.width-15,20,1,0xFF0000,type,"Test this is " + name);
                  elements.push(element);
                  element.x = 0;
                  element.y = elementArea.height;
                  //element.width = scrollArea.width-15;
                  //element.height = 20;
                  elementArea.addChild(element);
        }
        if (type == "entry") {
          _setupSection("section",name + " header");  
          var eri:int = 1;
                    for(var i:int = 0;i < elNum; i++ ){
                     element = new Box(0,0,scrollArea.width-3,20,1,0xFFFF00,"entry","This is a test");
                     elements.push(element);
                     element.x = 5;
                     element.y = elementArea.height;    
                     elementArea.addChild(element);
                 }
           _setupSection("section",name + " footer");  
        }

    }
            public function init():void{
                 scrollArea = new Box(0,0,320,320,0,0x0000FF); 
                 scrollArea.x = 0;
                 scrollArea.y = 0;
                 addChild(scrollArea);
                 scrollBarshadow = new Box(-20, 0, 10, scrollArea.height , 0, 0x0000FF);
                 scrollBar = new Box(-25, 0, 10, scrollArea.height/10, 0, 0xFF0000);
                 scrollBarshadow.x = scrollBar.x = scrollArea.x + scrollArea.width + 10;
                 scrollBarshadow.y = scrollArea.y;
                 scrollBar.y = scrollArea.y + scrollArea.height - scrollBar.height;
                 addChild(scrollBarshadow);
                 addChild(scrollBar);
                 bardist = scrollArea.height - scrollBar.height;
                 elements = [];
                 elementArea = new Sprite();
                 elementArea.x = scrollArea.x;
                 addChild(elementArea);
                   _setupSection("entry","More entrys",22);  
                 elementAreaDist = elementArea.height - scrollArea.height;
                 elementArea.y -= elementArea.height - scrollArea.height; 
                 elementArea.mask = scrollArea;
                 addEventListener(Event.ENTER_FRAME, xinitMoveScroll);
            }
            
            public function xinitMoveScroll(e:Event):void{
//                var vy:Number = (scrollArea.y - scrollBar.y) / 10; 
//                var vy2:Number= ((scrollArea.y) - elementArea.y) /10;
//             scrollBar.y += vy;
 //               elementArea.y += vy2;
                scrollBar.y = scrollArea.y;
                elementArea.y = scrollArea.y;
                removeEventListener(Event.ENTER_FRAME, xinitMoveScroll);
                scrollBar.addEventListener(MouseEvent.MOUSE_DOWN, _scrollbarHandler);
                stage.addEventListener(MouseEvent.MOUSE_UP, _scrollbarUpHandler);
            }
            
            public function _scrollbarHandler(e:MouseEvent):void{
                scrollBarPoint = scrollBar.height - (scrollBar.y + scrollBar.height - mouseY);
                addEventListener(Event.ENTER_FRAME, _onScrollArea );
            }
            public function _scrollbarUpHandler(e:MouseEvent):void{
                removeEventListener(Event.ENTER_FRAME, _onScrollArea );
            }
            public function _onScrollArea(e:Event = null):void{
                scrollBar.y = mouseY - scrollBarPoint;
                if(scrollBar.y + scrollBar.height  > scrollArea.y + scrollArea.height) {
                    scrollBar.y = scrollArea.y + scrollArea.height - scrollBar.height;
                }
                if(scrollBar.y < scrollArea.y ) {
                    scrollBar.y = scrollArea.y;    
                }
                targetDist = scrollArea.y - (elementAreaDist * ((scrollBar.y - scrollArea.y)/bardist)); 
                elementArea.y += (targetDist - elementArea.y) * 0.2; 
                
            }
    }
}

    import flash.display.Sprite;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.text.TextFormat;
    import flash.text.TextFormatAlign;
    
class Box extends Sprite {
               private var _tf:TextField = new TextField();
    public function Box(x:Number,y:Number,width:Number = 20,height:Number = 20,line:Number = 1,color:uint = 0xFF0000,type:String = "unknown",content:String = ""):void{
                with(this.graphics) {
                    if (type == "entry") {
               _tf.text = content;
               _tf.width = width - 22;
               _tf.height = height;
               addChild(_tf);
                    beginFill(color);
                    lineStyle(line);
                    drawRect(x,y,_tf.width,height);
                    endFill();
                    }
               if (type == "section") {
               _tf.text = content;
               _tf.width = width;
               _tf.height = height;
               addChild(_tf);
                    beginFill(color);
                    lineStyle(line);
                    drawRect(x,y,width,height);
                    endFill();
                    }
       if (type == "unknown") {
                    beginFill(color);
                    lineStyle(line);
                    drawRect(x,y,width,height);
                    endFill();
       }
                }
            }   
    
}