`
hereson
  • 浏览: 1451150 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

AS3.0写的一个滚动条【缓动效果】

阅读更多

package
{
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import flash.geom.Rectangle;
    
    public class myScrollBar extends MovieClip
    {
        
        private var moveSpeed:Number = 5;//滚动速度
        private var easingSpeed:Number = 4.5;//缓动速度

        private var contentName:MovieClip;
        private var maskViewName:MovieClip;
        
        /*需要用到的变量来计算拖动值*/
        private var scrollable:Number;
        private var scrollHeight:Number;
        private var top_scroll:Number;

        private var rx:Number;
        private var ry:Number;
        private var rwidth:Number;
        private var rheight:Number;
        
        private var easing:Boolean = true;
        
        public function myScrollBar ()
        {
            init();
        }
        //定义滚动控制影片的位置
        public function init ()
        {
            /*在此修改遮罩名:maskMc 和 被遮罩[内容]名:contentMc*/
            maskViewName = MovieClip(parent).maskMc
            contentName = MovieClip(parent).contentMc
            
            //设置遮罩
            contentName.mask = maskViewName
            
            //强制固定可控制元件的所有属性
            upBtn.y = maskViewName.y;//向上滚动按钮的位置
            
            downBtn.x = upBtn.x;
            
            scrollBg.x = upBtn.x;
            scrollBg.y = upBtn.y + upBtn.height;//滚动背景的y坐标
            scrollBg.height = downBtn.y - upBtn.height - upBtn.y;//滚动背景的高度
            
            dragBar.x = upBtn.x;
            dragBar.y = upBtn.y + upBtn.height;
            
            scrollHeight = scrollBg.height
            scrollable = contentName.height - maskViewName.height;
            top_scroll = contentName.y;
            
            //滑块可拖动的区域
            rx = scrollBg.x;
            ry = upBtn.y+upBtn.height;
            rwidth = 0;
            rheight = scrollBg.height - dragBar.height+1;
            
            //在开始前检测我们的滚动是否可滚动,如果内容不足滚动,隐藏dragger等,并返回。
            if (scrollable < 0)
            {
                dragBar.visible = false;
                return;
            }
            myBtnEvent()
            updateContentPos ()
        }
        //更新滚动内容的位置。公式的应用
        private function updateContentPos ()
        {
            var percent_scrolled:Number=(dragBar.y - upBtn.height) / (scrollHeight - dragBar.height);
            contentName.newY = Math.round(top_scroll -(scrollable * percent_scrolled));
            //contentName.y=Math.round(top_scroll - (scrollable * percent_scrolled));
            
            //缓动效果
            contentName.addEventListener(Event.ENTER_FRAME,easingFunc)
        }
        private function easingFunc(event:Event)
        {
            if(!easing)
             {
                 event.target.y = event.target.newY
             }
             else
             {
                 event.target.y += (event.target.newY-event.target.y)/easingSpeed
             }
        }
        
        //滚动按钮事件
        private function myBtnEvent()
        {
            upBtn.addEventListener(MouseEvent.MOUSE_DOWN,upBtnDownFunc) //向上按钮鼠标按下事件
            dragBar.addEventListener(MouseEvent.MOUSE_DOWN,dragBarDownFunc) //滑块按钮鼠标按下事件
            downBtn.addEventListener(MouseEvent.MOUSE_DOWN,downBtnDownFunc) //向下按钮鼠标按下事件
        }
        
        
        //向上按钮
        private function upBtnDownFunc(event:Event)
        {
            event.target.addEventListener(Event.ENTER_FRAME,upBtnMoveFunc);
            event.target.addEventListener(MouseEvent.MOUSE_UP,upBtnUpFunc);
            event.target.addEventListener(MouseEvent.MOUSE_OUT,upBtnOutFunc);
        }
        private function upBtnMoveFunc(event:Event)
        {
            dragBar.y = Math.max (ry, dragBar.y - moveSpeed);
            updateContentPos ()
        }
        private function upBtnUpFunc(event:Event)
        {
            event.target.removeEventListener(Event.ENTER_FRAME,upBtnMoveFunc);
        }
        private function upBtnOutFunc(event:MouseEvent)
        {
            event.target.removeEventListener(Event.ENTER_FRAME,upBtnMoveFunc);
        }
        
        //向下按钮
        private function downBtnDownFunc(event:Event)
        {
            event.target.addEventListener(Event.ENTER_FRAME,downBtnMoveFunc);
            event.target.addEventListener(MouseEvent.MOUSE_UP,downBtnUpFunc);
            event.target.addEventListener(MouseEvent.MOUSE_OUT,downBtnOutFunc);
        }
        private function downBtnMoveFunc(event:Event)
        {
            dragBar.y = Math.min (rheight+event.target.height, dragBar.y + moveSpeed);
            updateContentPos ()
        }
        private function downBtnUpFunc(event:Event)
        {
            event.target.removeEventListener(Event.ENTER_FRAME,downBtnMoveFunc);
        }
        private function downBtnOutFunc(event:Event)
        {
            event.target.removeEventListener(Event.ENTER_FRAME,downBtnMoveFunc);
        }
        
        //滑块事件
        private function dragBarDownFunc(event:Event)
        {
            var rec:Rectangle = new Rectangle(rx,ry,rwidth,rheight);
            event.target.startDrag(false,rec)
            event.target.addEventListener(MouseEvent.MOUSE_MOVE,dragBarEnterFunc) //滑块按钮鼠标松开事件
            
            event.target.addEventListener(MouseEvent.MOUSE_UP,dragBarUpFunc) //滑块按钮鼠标松开事件
            event.target.addEventListener(MouseEvent.MOUSE_OUT,dragBarOutFunc)
        }
        private function dragBarUpFunc(event:Event)
        {
            event.target.stopDrag();
            event.target.removeEventListener(MouseEvent.MOUSE_MOVE,dragBarEnterFunc);
        }
        private function dragBarOutFunc(event:Event)
        {
            event.target.stopDrag();
            event.target.removeEventListener(MouseEvent.MOUSE_OUT,dragBarEnterFunc);
        }
        private function dragBarEnterFunc(event:Event)
        {
            updateContentPos ()
        }
        
    }
}

分享到:
评论
4 楼 hereson 2011-01-14  
wangwanttt 写道
兄弟,咋没FLASH文件啊,搞个源文件下载啊

代做flex作业
3 楼 hereson 2011-01-13  
zznj1123 写道
怎么没有例子?可以用到flex里面吗?盼回答,谢谢

代做flex作业
2 楼 zznj1123 2011-01-06  
怎么没有例子?可以用到flex里面吗?盼回答,谢谢
1 楼 wangwanttt 2009-06-13  
兄弟,咋没FLASH文件啊,搞个源文件下载啊

相关推荐

    AS3 滚动条

    AS3滚动条是ActionScript 3.0编程语言中实现的一种用户界面元素,它主要用于在内容超出可视区域时提供导航。在AS3中,滚动条是通过Flash的UI组件库来创建和控制的,允许用户在长或宽的数据显示区域中进行上下或左右...

    FLASH AS3.0实现自动滚动

    标题"FLASH AS3.0实现自动滚动"表明我们将探讨如何利用AS3.0来实现一个元件的自动滚动效果。这种效果常见于滚动文本、滚动条或游戏中的滚动背景等场景。 描述中提到的“元件自由滚动功能”是指我们可以自定义任何...

    flash元件滚动条(AS3.0)

    先介绍下我这个flash拖动条吧,AS3.0,拖动时有缓动效果,没有用到第三方动画类,内容高度可变化,支持随时改动拖动条的高度,以适应新区域,例如跟随窗口变化,支持鼠标滚轮操作。额外功能,可在外部监听滚动状态。

    AS3.0 仿iphone滑动效果

    在本文中,我们将深入探讨如何使用AS3.0(ActionScript 3.0)实现一个模仿iPhone滑动效果的交互式界面。这个效果包括平滑的缓冲动作,无论是横向还是纵向滑动,都能提供类似iOS设备上的用户体验。AS3.0是Adobe Flash...

    as3.0编写的滚动条代码源码

    ### AS3.0滚动条代码源码解析及应用 #### 一、概述 在Adobe Flash平台中,ActionScript 3.0(AS3)是一种广泛使用的编程语言,它支持创建复杂的交互式应用程序和游戏。本篇文章将深入分析一份用于创建简单滚动条...

    FLASH动态滚动条 缓动滚动条 上下滚动

    以下是一个简单的ActionScript代码片段,用于创建一个垂直滚动条并添加缓动效果: ```actionscript import fl.transitions.Tween; import fl.transitions.easing.*; var contentHeight:Number = // 获取内容高度 ...

    as3滚动条制作

    AS3滚动条制作是Flash开发中的一个重要组成部分,主要用于在内容超过可视区域时提供导航,确保用户可以方便地浏览和操作长或宽的内容。在Flash环境中,ActionScript 3(AS3)是编程语言,用于创建交互式的动画和应用...

    as3的滚动条

    在"Brnad AS3滚动条 V 1.02"这个压缩包中,可能包含了一个自定义滚动条组件的源代码。你可以通过研究源码来学习如何实现上述功能,包括如何创建组件、添加事件监听器、处理鼠标事件以及计算滑块位置。源码还可能包含...

    as3.0 播放器 源码

    通过这些组件的组合,AS3.0播放器源码可以实现一个功能完善的媒体播放应用,提供播放、暂停、快进、后退、音量控制、歌词显示、歌曲列表选择等多种功能。了解和研究这些源码对于学习Flash开发、媒体处理和AS3编程...

    flash服装网站as3.0源代码

    总的来说,"flash服装网站as3.0源代码"是一个宝贵的教育资源,无论是初学者还是有经验的开发者,都可以从中汲取灵感,提升自己的编程技艺。通过深入研究并实践这些代码,可以更好地理解AS3.0在实际项目中的应用,并...

    AS3 滚动条 源码

    2. **ScrollPolicy**: 这是一个枚举值,用于决定滚动条何时显示。ScrollPolicy.ON表示始终显示,ScrollPolicy.OFF表示始终不显示,ScrollPolicy.AUTO则根据内容和视口大小自动决定。 3. **HorizontalScrollView/...

    AS3.0TextField.txt

    1. **scrollH** 和 **scrollV**: 分别控制水平和垂直滚动条的位置。 2. **maxScrollH** 和 **maxScrollV**: 分别表示最大水平和垂直滚动距离。 3. **bottomScrollV**: 用于计算 `TextField` 底部相对于视图的位置。 ...

    Flash 特好用的滚动条效果

    为了封装滚动条效果,开发者通常会创建一个自定义的MovieClip,将滚动条的各个组成部分(轨道、滑块、箭头等)作为子对象,并编写对应的AS3代码来处理它们的行为。这样,就可以在多个项目中重复使用这个组件,提高...

    AS3.0 TLFTextField 组件库

    AS3.0 TLFTextField 最新的组件库 以往的有BUG,这个可是最新的哦 package { import fl.controls.UIScrollBar; import fl.text.TLFTextField; import flash.events.Event; import flashx.textLayout....

    Flash9下as3.0编程的aswing包

    ASwing库借鉴了Java Swing的设计理念,为AS3.0程序员提供了丰富的组件和布局管理器,这些组件可以用于构建用户界面,如按钮、文本框、滚动条、菜单等。通过使用ASwing,开发者可以像在Java环境中那样,利用组件拖放...

    Action Script3.0

    3. **事件驱动编程**:AS3.0的事件模型使得处理用户交互变得简单,如点击按钮、滚动条移动等。Event类和EventListener接口是实现事件处理的关键。 4. **显示对象层次**:AS3.0中的DisplayObject和...

    开源码 as3 扩展瀑布流功能的DataGrid组件

    该组件的一个显著特点是滚动条带有缓动效果,这为用户提供了平滑的滚动体验。缓动效果是动画设计中常用的一种技术,它能使界面操作更加流畅自然,增加用户的沉浸感。在 DataGrid 中,这种效果使得用户在滚动时不会...

    ActionScript 3.0动态绘制正弦曲线(附源码)

    - AS3.0使用面向对象编程,基于ECMAScript 4的一个子集,提供了类、接口和包等概念。 2. **舞台和时间轴**: - 在Flash环境中,舞台(Stage)是显示内容的地方,而时间轴(Timeline)用于组织帧和层,控制动画的...

    Flash.ActionScript.3.0动画教程示例源代码

    总之,《Flash ActionScript 3.0 动画教程示例源代码》是一个宝贵的资源库,它不仅提供了丰富的动画示例,还是一份动手实践的指南,帮助开发者从理论到实践,从基础到进阶,全面掌握Flash ActionScript 3.0的动画...

    FLASH滚动条

    1. 创建新Flash文档:首先,打开Flash并创建一个新的ActionScript 3.0文档。 2. 设计界面:使用Flash的绘图工具创建界面,包括放置需要滚动的内容区域。 3. 创建滚动条组件:在ActionScript类库中,可以找到内置的...

Global site tag (gtag.js) - Google Analytics