forked from: basic scrollBar
forked from basic scrollBar (diff: 85)
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();
}
}
}
}
