快速业务通道

简单使用2.0制作滚动条

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12


之前写过一个简单的教程,但有只是滚动条拖动的计算。。之后就有很多初学者一直pm来说textfield中的文字增加了,滚动条不会刷新。那么今天有空就拿回来改了一下,顺便弄成class的简单格式,当然有兴趣的朋友可以自己增加功能之后制作成自己的组件 :)
http://www.Flash8.net/bbs/UploadFile/2004-12/2004121812109722.swf
class ScrollText{
private var root:MovieClip;
private var barObj:MovieClip;
private var textObj:TextField;
private var text:String = "Coding by Super-Tomato";
public var __width:Number = 300;
public var __height:Number = 200;
public var min:Number;
public var max:Number;
public var inc:Number;

public function ScrollText(mc:MovieClip, depth:Number) {
var target:Object = this;
root = mc.createEmptyMovieClip("__scrollText", depth); //根据使用者提供的深度创建一个mc
createObj(); //建立文本和滚动条
barObj.onPress = function() { //滚动条按下进行拖动的动作
this.onEnterFrame = function() { //此循环是为了得到最新可拖动范围的值
this.startDrag(false, this._x, target.min, this._x, target.max); //设定拖动范围
target.textObj.scroll = int(this._y/target.inc); //根据滚动条的位置设定文字所滚动到的位置
};
}
barObj.onRelease = barObj.onReleaseOutside = function() { //放开滚动条的动作
this.stopDrag(); //停止拖动
delete this.onEnterFrame; //删除循环事件以减少计算量
}
setInterval(this, "refreshScroll", 100); //每100毫秒刷新一次
}
private function createObj():Void {
root.createTextField("__textArea",0,0,0,this.__width,this.__height); //创建文本
textObj = root.__textArea;
textObj.border = true; //显示文本的边框
textObj.text = this.text; //设定文本的文字
barObj = root.createEmptyMovieClip("__scrollBar",1); //建立滚动条
barObj._x = this.__width + 5; //设定滚动条的位置
with(barObj) { //画出滚动条
beginFill(0xFF9900);
lineTo(20, 0);
lineTo(20, this.__height);
lineTo(0, this.__height);
lineTo(0,0);
endFill();
}
}
private function refreshScroll():Void {
textObj.text = this.text; //每100毫秒设定一次文本的文字
var newHeight:Number = textObj._height / textObj.textHeight; //计算文本的高度和文字高度的比例
if(newHeight < 1) { //如果文字的高度大于文本所能够显示的高度
barObj._height = newHeight * textObj._height; //更新滚动条的长度
} else { //文本内容少于显示范围
barObj._height = this.__height; //滚动条的长度就等于原来所设定的高度
}
this.min = textObj._y; //文本的顶点位置
this.max = this.min+(textObj._height - barObj._height); //滚动条所能拖动的最低范围
this.inc = int(Math.abs(this.max-this.min)/textObj.maxscroll); //根据文本最大的滚动值计算滚动条能够拖动的距离
}
}
使用:
var scroller = new ScrollText(this,1); //创建,第一参数是对象, 第二参数是深度
scroller.text = "abcdef"; //设定文字 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号