用as3.0制作一个滚动条组件

本实例演示了实现一个滚动条基本功能的制作方法,没有添加改变皮肤,修改滚动条视框大小等功能,有兴趣的朋友可根据自己要求自行添加。使用时只需要通过以下一行代码创建滚动条组件:
在这里插入图片描述
1
2
var myScrollbar:Scrollbar=new Scrollbar(mc);
addChild(myScrollbar);
其中mc为需要添加滚动条功能的元件,如影片剪辑,文本等。

一、制作元件
滚动条由滑块slider,向上向下滚动的按钮,滚动条背景,遮挡内容的遮罩及存储内容的contMc元素组成。当拖动滑块slider或单击上下按钮时,contMc会上下滚动。制作元件并命名如下:

二、为滚动条的库元件添加链接(如下图所示)

三、链接的类代码
全局变量说明:step为滚动步数,top为slider滑块在最顶端的位置,buttom为滑块在最低端的位置。

复制代码
1 package {
2
3 import flash.display.MovieClip;
4 import flash.display.DisplayObject;
5 import flash.events.Event;
6 import flash.events.MouseEvent;
7
8 public class Scrollbar extends MovieClip {
9
10 private var step:int=5;
11 private var top:Number;
12 private var buttom:Number;
13
14 public function Scrollbar(mc:DisplayObject) {
15 this.contMc.addChild(mc);
16 mc.x=0;
17 mc.y=0;
18 this.addEventListener(Event.ADDED_TO_STAGE,init);
19 }
20
21 private function init(e:Event):void {
22 top=this.slider.height/2;
23 buttom=this.back.height-this.slider.height/2;
24 this.downBtn.addEventListener(MouseEvent.CLICK,downHandler);
25 this.upBtn.addEventListener(MouseEvent.CLICK,upHandler);
26 this.slider.addEventListener(MouseEvent.MOUSE_DOWN,sliderDrag);
27 }
28
29 private function downHandler(e:MouseEvent):void {
30 if(this.slider.y<buttom){
31 this.slider.y+=step;
32 }
33 if(this.slider.y>buttom){
34 this.slider.y=buttom;
35 }
36 moveContMc();
37 }
38
39 private function upHandler(e:MouseEvent):void {
40 if(this.slider.y>top){
41 this.slider.y-=step;
42 }
43 if(this.slider.y<top){
44 this.slider.y=top;
45 }
46 moveContMc()
47 }
48
49 private function sliderDrag(e:MouseEvent):void {
50 this.stage.addEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
51 this.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
52
53 }
54
55 private function mouseUpHandler(e:MouseEvent):void {
56 this.removeEventListener(Event.ENTER_FRAME,enterFrameHandler);
57 }
58
59 private function enterFrameHandler(e:Event):void {
60 this.slider.y=Math.min(buttom,Math.max(top,this.mouseY));
61 moveContMc();
62 }
63
64 private function moveContMc():void {
65 this.contMc.y=-(this.contMc.height-this.back.height)(this.slider.y-top)/buttom;
66 }
67
68 }
69 }
复制代码
四、moveContMc函数解析:
如下图左示意,当slider滑块由最顶端(top位置)向下移动距离b时,contMc会向上移动距离a。如下图右,当滑块移动到最低端(buttom位置)时,contMc会移动到最顶端,距离为m(值为contMc的高度-遮罩层的高度),由a/b=m/n,可算出a值为m
b/n,即:

this.contMc.y=-(this.contMc.height-this.back.height)*(this.slider.y-top)/buttom;

在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值