function setContent(txt:String):void { _text.htmlText=txt;//传入文字内容 var isShow:Boolean=_text.textHeight>maskMC.height?true:false;//根据文本内容高度是否超过遮罩高度,判断是否需要显示滚动条 scrollBar=new ScrollBar(isShow,maskMC.height); scrollBar.x=maskMC.x+maskMC.width-scrollBar.width; scrollBar.y=maskMC.y; scrollBar.setHeight(maskMC.height); scrollBar.addEventListener(Event.CHANGE,onScrolling,false,0,true); addChild(scrollBar); } function onScrolling(e:Event):void { _text.y = maskMC.y-(_text.height-maskMc.height)*scrollBar.txt; }

package leo.controls { import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.geom.Rectangle; import gs.*; import com.pixelbreaker.ui.osx.MacMouseWheel; public class ScrollBar extends Sprite { private var _thumb:Sprite; private var _height:Number; private var _thumbColor:int=0xBEBEBE;// private var _thumbBgColor:int=0xDEDEDE;// private var _tweenSpeed:Number=0.5; private var _rect:Rectangle; private var _showed:Boolean; private var _scrollTo:Number=0; private var _wheelScrollSpeed:Number=2; public var wheelFocusTarget:DisplayObject; //背景底 private var _thumbBg:Sprite; public function ScrollBar(showed : Boolean,bgheight:Number) { //画一个背景底 _thumbBg=new Sprite(); _thumbBg.graphics.beginFill(_thumbBgColor); _thumbBg.graphics.drawRect(0, 0, 5, 10); _thumbBg.graphics.endFill(); _thumbBg.width=5; _thumbBg.height=bgheight; addChild(_thumbBg); // 画一个控制滚动条的bar _thumb = new Sprite(); _thumb.graphics.beginFill(_thumbColor); _thumb.graphics.drawRect(0, 0, 5, 10); _thumb.graphics.endFill(); _thumb.buttonMode=true; _thumb.height=10; _thumb.width=5; _thumb.addEventListener(MouseEvent.MOUSE_DOWN, _thumbDownHandler, false, 0, true); _thumb.addEventListener(MouseEvent.MOUSE_OVER, _thumbOverHandler, false, 0, true); _thumb.addEventListener(MouseEvent.MOUSE_OUT, _thumbOutHandler, false, 0, true); addEventListener(Event.ADDED_TO_STAGE, _addedToStageHandler, false, 0, true); addEventListener(Event.REMOVED_FROM_STAGE, _removedFromStageHandler, false, 0, true); //传一个参数控制其是否显示 visible=showed; alpha=showed?1:0; addChild(_thumb); _showed=showed; } private function _addedToStageHandler(event : Event):void { //添加中健滑动功能 MacMouseWheel.setup(stage); wheelFocusTarget=wheelFocusTarget?wheelFocusTarget:stage; wheelFocusTarget.addEventListener(MouseEvent.MOUSE_WHEEL, _stageMouseWheelHandler, false, 0, true); } private function _removedFromStageHandler(event : Event):void { stage.removeEventListener(MouseEvent.MOUSE_UP, _stageUpHandler); stage.removeEventListener(MouseEvent.MOUSE_MOVE, _stageMoveHandler); if (wheelFocusTarget) { wheelFocusTarget.removeEventListener(MouseEvent.MOUSE_WHEEL, _stageMouseWheelHandler); } } private function _thumbDownHandler(event : MouseEvent):void { //当高度值设置不为零且已经实例化_rect if (_height&&_rect) { //开始拖动 _thumb.startDrag(false, _rect); stage.addEventListener(MouseEvent.MOUSE_UP, _stageUpHandler, false, 0, true); stage.addEventListener(MouseEvent.MOUSE_MOVE, _stageMoveHandler, false, 0, true); removeEventListener(Event.ENTER_FRAME, _enterFrameHandler); } } private function _thumbOverHandler(event : MouseEvent):void{ TweenMax.to(_thumb, 1, {colorMatrixFilter:{colorize:0xff0000, amount:1}}); } private function _thumbOutHandler(event : MouseEvent):void{ TweenMax.to(_thumb, 1, {colorMatrixFilter:{colorize:0x00ff00, amount:1}}); } private function _stageMouseWheelHandler(event : MouseEvent):void { var _y : Number = _thumb.y - (event.delta * 3); _y=_y<0?0:_y; _y=_y>_rect.height?_rect.height:_y; _scrollTo=_y; if (! hasEventListener(Event.ENTER_FRAME)) { addEventListener(Event.ENTER_FRAME, _enterFrameHandler, false, 0, true); } } private function _enterFrameHandler(event : Event):void { var before:Number=_thumb.y; _thumb.y += (_scrollTo - _thumb.y) / _wheelScrollSpeed; dispatchEvent(new Event(Event.CHANGE)); if (Math.abs(_thumb.y-before)<0.008) { removeEventListener(Event.ENTER_FRAME, _enterFrameHandler); } } private function _stageUpHandler(event : MouseEvent):void { _thumb.stopDrag(); stage.removeEventListener(MouseEvent.MOUSE_MOVE, _stageMoveHandler); stage.removeEventListener(MouseEvent.MOUSE_UP, _stageUpHandler); } private function _stageMoveHandler(event : MouseEvent):void { //如果滚动条状态为显示,开始移动的时候就发送改变事件 if (showed) { dispatchEvent(new Event(Event.CHANGE)); } } private function _hideCompleteListener(event : Event):void { visible=false; } //此为设置文本的高度,即滑动条滑动的纵坐标距离为:_rect.height public function setHeight(value : Number):void { //要滑动,高度值不能小于或者等于零 _height=value; _rect=new Rectangle(0,0,0,_height-_thumb.height); } public function show():void { visible=true; _showed=true; TweenLite.to(this,_tweenSpeed,{alpha:1}); } public function hide():void { TweenLite.to(this,_tweenSpeed,{alpha:0,onComplete:_hideCompleteListener}); _showed=false; } //滑块纵坐标与可滑动区域的高度比,范围在0-1之间 public function get value():Number { return _thumb.y / _rect.height; } public function set value(_value : Number):void { _thumb.y=_rect.height*_value; } public function get showed():Boolean { return _showed; } } }

陈勇写的滚动条类及使用举例相关推荐

  1. 陈勇写的换行、换列排放

    var num:int=34;//图片数量 var colsNum:int=5;//预定列数,即每行放多少张图片 var cols:int;//列索引号 var rows:int;//行索引号 for ...

  2. 火星人敏捷开发1001问(第二季)-陈勇-专题视频课程

    火星人敏捷开发1001问(第二季)-17497人已学习 课程介绍         此课程为敏捷开发的课程,聚焦于敏捷开发中似是而非的各种问题.每个问题都会有分析与解决的环节,从而令学员不但得到可行的答 ...

  3. 转载几篇别人写的皮肤类控件的技术文章

    转载几篇别人写的皮肤类控件的技术文章 原连接:http://blog.sina.com.cn/s/blog_4c3538470100ezhu.html 实现控件的透明背景 很多情况下,我们需要控件 的 ...

  4. Java重构与TDD测试驱动开发实际案例一-陈勇-专题视频课程

    Java重构与TDD测试驱动开发实际案例一-2117人已学习 课程介绍         本课程将高深的重构与TDD理论埋藏在一个实际案例中,深入浅出地演示了重构与TDD的完整步骤. 在这个真实的案例中 ...

  5. Gartner陈勇:中国企业更积极探索双模IT

    当今时代是数字化业务的时代,虚拟世界和物理世界互相融合在一起形成了新的商业模式.事实上,我们不难看出,网络的发展就是把人与人连接.人与业务连接因而形成了电子商务时代.消费者和供应商也通过网络连接起来, ...

  6. 2012年度IT博客大赛50强报道:陈勇

    2012年度IT博客大赛50强 火星人陈勇(陈勇) 参赛感言: 两年前写博客的时候,敏捷开发已经是一个很热门的话题了.介绍敏捷开发的书有上百种之多,能在网络上搜索到的资料也很多.然而敏捷开发进入中国1 ...

  7. 2012年度十大杰出IT博客之 陈勇

    2012年度十大杰出IT博客之 火星人陈勇 个人简介: 曾以技术骨干和项目经理等身份,组织和承担开发了国庆50周年直升机编队指挥系统.空军一基地GPS数据源系统.清华同方CCTV数字电视条件接收系统. ...

  8. Controller类的方法上的RequestMapping一定要写在Controller类里吗?

    使用Spring Cloud做项目的同学会使用Feign这个组件进行远程服务的调用,Feign这个组件采用模板的方式,有着优雅的代码书写规范.核心原理对Feign等相关注解进行解析,并提取信息,在Sp ...

  9. 写一个ArrayList类的动态代理类

    动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实,代理对象对客户隐藏了实际对象.动态代理可以对请求进行其他的一些处理,在不允许直接访问某些类,或需要对访问做一些特殊处理等,这时候可以考虑 ...

最新文章

  1. Java学习必不可少的网站,快收藏起来
  2. kafka-2.11-2.3.0版本配置文件参数详解_Kafka版本特性总结
  3. Qt 原理-MOC(3) 对象模型
  4. ​SpringCloud:统一异常处理
  5. 计算机网络与综合布线系统设计,计算机网络与通信技术10-综合布线系统.ppt
  6. java中自定义输入数字格式_Java 创建并使用自定义数字格式、35;###、####.#####和语言环境...
  7. Git使用六:版本对比
  8. 【转载】网站从百度云转入阿里云服务器
  9. 解决Xshell无法连接虚拟机CentOS7问题
  10. python获取app信息的库_Python学习教程:另辟蹊径,appium抓取app应用数据了解一下...
  11. 045、JVM实战总结:动手实验:自己动手模拟出对象进入老年代的场景体验一下(上)
  12. php 验证链接,PHP判断链接是否有效 的方法
  13. java生成树型思维导图_Java生成思维脑图
  14. Python模块大全(Mark随用随看)
  15. 入侵sf服务器技术_入侵服务器、疯狂攻击各种网站, 这个黑客团伙终被“团灭”!...
  16. 播放视频时过滤播霸浏览器
  17. 更新中国地区ip列表
  18. 【读论文】一种半监督文本分类方法:MixText
  19. vue项目集成金格WebOffice2015
  20. python chm模块_python3.7.0官方参考文档 最新api文档 chm

热门文章

  1. ChatGPT怎么突然变得这么强?华人博士万字长文深度拆解GPT-3.5能力起源
  2. 懂商业的技术合伙人(1):你是怎样成为打工仔的
  3. 周公解梦星座运势小程序搭建
  4. Latex中的狄拉克算符
  5. ubutun安装与卸载软件
  6. 阅读笔记 | Code to Comment “Translation”:Data, Metrics, Baselining Evaluation
  7. 电子电路仿真设计与制版软件综述 - PCB, OrCAD, PADs
  8. Microsoft Azure IoT Hub应用 – 第一部分:向云端发送数据
  9. mac 上开发常用的软件强烈推荐
  10. MySQL常用工具选择和建议