佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2777|回复: 4

[教程]简单使用AS2.0制作滚动条 :)

[复制链接]
发表于 19-12-2004 05:34 PM | 显示全部楼层 |阅读模式
之前写过一个简单的教程,但有只是滚动条拖动的计算。。之后就有很多初学者一直pm来说textfield中的文字增加了,滚动条不会刷新。那么今天有空就拿回来改了一下,顺便弄成class的简单格式,当然有兴趣的朋友可以自己增加功能之后制作成自己的组件


class ScrollText{
private var root:MovieClip;  
private var barObj:MovieClip;
private var textObj:TextField;
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;  //删除循环事件以减少计算量
  }
}
private function createObj():Void {
  root.createTextField("__textArea",0,0,0,this.__width,this.__height);  //创建文本
  textObj = root.__textArea;
  textObj.border = true;  //显示文本的边框
  textObj.text = "Coding by Super-Tomato";  //设定文本的文字
  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 {
  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);  //根据文本最大的滚动值计算滚动条能够拖动的距离
}
public function set _text(txt:String):Void {
  textObj.text = txt;  //更新文本的文字
  refreshScroll();
}
}




使用:

var scroller = new ScrollText(this,1);  //创建,第一参数是对象, 第二参数是深度

scroller._text = "abcdef";  //设定文字




例子: Flash: http://super-tomato.aspfreeserver.com/example/ScrollBar.swf

[ 本帖最后由 super-tomato 于 15-2-2006 07:29 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 19-12-2004 05:37 PM | 显示全部楼层
好棒。。谢谢分享.........
回复

使用道具 举报

发表于 22-12-2004 01:19 AM | 显示全部楼层
加入精华。
回复

使用道具 举报

踏飞雪 该用户已被删除
发表于 30-12-2004 11:20 PM | 显示全部楼层
哇賽.......
好難懂啊............
回复

使用道具 举报

小蛋超人 该用户已被删除
发表于 12-2-2006 06:15 PM | 显示全部楼层
我开不到那个超链接。。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 25-5-2024 03:36 PM , Processed in 0.065368 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表