Custom ScrollBar

Yêu cầu cần để có thể chạy được: Bộ Tween Class AS3 của bọn greenShock

Bước 1: “Proxy.as”  class

package proxy
{
public class Proxy
{
// Create a wrapper for a callback function.
// Tacks the additional args on to any args normally passed to the
// callback.
public static function create(handler:Function,…args):Function
{
return function(…innerArgs):void
{
handler.apply(this,innerArgs.concat(args));
};
}
}
}

Bước 2: “ScrollObject.as”  class nằm trong thư mục “”scrollObject

package scrollObject {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.MouseEvent;

import gs.TweenMax;

import proxy.Proxy;

import flash.geom.Rectangle;

/**
* @author vnfx
*/
public class ScrollObject {
private var SPRITE : Sprite;
private var BOUND : Rectangle;
private var CONTAINER : MovieClip;
private var SEEK : MovieClip;
private var SEEK_BAR : MovieClip;
private var SEEK_BTN : MovieClip;
private var MASK : MovieClip;

public function ScrollObject(sprite : Sprite,container : MovieClip,seek : MovieClip,mask : MovieClip) {
SPRITE = sprite;
CONTAINER = container;
SEEK = seek;
SEEK_BAR = SEEK.seek_bar;
SEEK_BTN = SEEK.seek_btn;
SEEK_BTN.y = SEEK_BAR.y;
MASK = mask;
CONTAINER.mask = MASK;
BOUND = new Rectangle(SEEK_BTN.x, SEEK_BTN.y, SEEK_BTN.x, SEEK_BAR.height – SEEK_BTN.height);
//———– hide seek
if(CONTAINER.height < MASK.height) {
SEEK.visible = false;
}else {
SEEK.visible = true;
}
//———–
SEEK_BTN.addEventListener(MouseEvent.MOUSE_DOWN, Proxy.create(beginDrag));
SPRITE.stage.addEventListener(MouseEvent.MOUSE_UP, Proxy.create(endDrag));
}

private function beginDrag(evt : MouseEvent) : void {
SEEK_BTN.gotoAndStop(“on”);
SEEK_BTN.startDrag(false, BOUND);
SPRITE.stage.addEventListener(MouseEvent.MOUSE_MOVE, Proxy.create(scrollContent));
}

private function endDrag(evt : MouseEvent) : void {
SEEK_BTN.gotoAndStop(“off”);
SEEK_BTN.stopDrag();
SPRITE.stage.removeEventListener(MouseEvent.MOUSE_MOVE, Proxy.create(scrollContent));
SEEK_BTN.removeEventListener(MouseEvent.MOUSE_DOWN, beginDrag);
}

private function scrollContent(evt : MouseEvent) : void {
var percent : Number = SEEK_BTN.y / (SEEK.height – SEEK_BTN.height);
var distance : Number = -percent * (CONTAINER.height – MASK.height);
TweenMax.to(CONTAINER, 0.5, {y:distance});
}
}
}

Bước 3: Tạo document flash

_ container : name:”container_mc
_ seekBar name:”seek_mc” chứa * scroll button name :”seek_btn” và * scroll bar name :”seek_bar
_ mask : name: “mask_mc

Chọn frame 1 mở bảng actionScript code:

import scrollObject.ScrollObject;
new ScrollObject(this,container_mc,seek_mc,mask_mc);

Bước 3: Ctrl+Enter để test

Gửi phản hồi

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Thay đổi )

Twitter picture

You are commenting using your Twitter account. Log Out / Thay đổi )

Facebook photo

You are commenting using your Facebook account. Log Out / Thay đổi )

Connecting to %s

Follow

Get every new post delivered to your Inbox.