//=================系统初始化=================//
//——————界面初始化 //小滑块不可见,上下按钮不可用 huakuai_mc._visible = false; shang_btn.enabled = false; xia_btn.enabled = false; //初始化点击热区的影片 requ_mc._alpha = 0; requ_mc._width = this._width; requ_mc._height = xia_btn._y-shang_btn._y-shang_btn._height; requ_mc._x = 0; requ_mc._y = shang_btn._y+shang_btn._height; //——————变量初始化 //文本域接口变量:接收父剪辑文本域名字 var wenben_txt = _parent.wenben_txt; //按钮按下的时间,当按下指定时间后,连续滚动 var zhidingshijian = 500; //滑块儿高度随文本多少变化的指数因子,此因子小于1,大于零,其值越大,高度变化越剧烈 var zhishuyinzi = 1/3; //滑块的初始高度为滚动条总高度,并记录 var chushigaodu = Math.floor(xia_btn._y-shang_btn._y-shang_btn._height); //初始化滑块Y坐标,并记录 var ychushiweizhi = huakuai_mc._y=Math.floor(shang_btn._y+shang_btn._height); //——————对象初始化 //为父剪辑的文字域注册侦听器,以侦听在文字域产生变化时,也就是在文本被载入进来时,执行下面的代码。这样就不用担心代码执行顺序问题! var wenbenzhentingqi = new Object(); wenben_txt.addListener(wenbenzhentingqi); //鼠标滚球滚动侦听对象 var shubiaozhentingqi = new Object(); Mouse.addListener(shubiaozhentingqi); //====================滚动代码===================// //——————当文字域载入完成时,触发onScroller事件! wenbenzhentingqi.onScroller = function() { //判断滑块儿是否显示,并根据文本内容多少定义滑块高度 if (wenben_txt.maxscroll != 1) { //小滑块可见,上下按钮可用 huakuai_mc._visible = true; shang_btn.enabled = true; xia_btn.enabled = true; //定义一个高度因子,此因子随加载文本的增多,将无限趋向于1。 var gaoduyinzi = 1-(wenben_txt.maxscroll-1)/wenben_txt.maxscroll; //根据高度因子初始化滑块的高度 huakuai_mc._height = Math.floor(chushigaodu*Math.pow(gaoduyinzi, zhishuyinzi)); //滑块滚动的总象素数 zongxiangsu = Math.floor(xia_btn._y-shang_btn._y-shang_btn._height-huakuai_mc._height); huakuai_mc._y = Math.floor(ychushiweizhi+zongxiangsu*(wenben_txt.scroll-1)/(wenben_txt.maxscroll-1)); } else { //小滑块不可见,上下按钮不可用 huakuai_mc._visible = false; shang_btn.enabled = false; xia_btn.enabled = false; } }; //——————定义上按钮 shang_btn.onPress = function() { //获得按钮按下的时间 var anxiashijian = getTimer(); //文本域滚动 wenben_txt.scroll--; //当按下时间超过指定时间时,连续滚动 onEnterFrame = function () { if (getTimer()-anxiashijian>zhidingshijian) { wenben_txt.scroll--; } }; }; //松开按钮时删除不需要的onEnterFrame shang_btn.onRelease = shang_btn.onReleaseOutside=function () { delete onEnterFrame; }; //——————定义下按钮,原理同“上按钮”,注释省略 xia_btn.onPress = function() { var anxiashijian = getTimer(); wenben_txt.scroll++; onEnterFrame = function () { if (getTimer()-anxiashijian>zhidingshijian) { wenben_txt.scroll++; } }; }; xia_btn.onRelease = xia_btn.onReleaseOutside=function () { delete onEnterFrame; }; //——————滑块MC事件处理,当鼠标经过或按下时 huakuai_mc.onMouseDown = function() { if (this.hitTest(_root._xmouse, _root._ymouse, true)) { //删除文本域的侦听器,避免冲突 wenben_txt.removeListener(wenbenzhentingqi); //开始拖动 this.startDrag(false, this._x, ychushiweizhi, this._x, ychushiweizhi+zongxiangsu); //使文本随滑块滚动 this.onEnterFrame = function() { //在滚动过程中即时获得“滑块所处位置” var xianzaiweizhi = Math.floor(this._y); //使文本随滚动条滚动,这里加1是因为当外部文本载入文本域完成后, //就算没有滚动,scroll值默认就为1,所以需要加上,不然无法显示最后一行 //但加上以后,又会造成一个小BUG,就是按钮控制与滑块控制切换的时候,会造成一行的偏差 wenben_txt.scroll = (wenben_txt.maxscroll-1)*(xianzaiweizhi-ychushiweizhi)/zongxiangsu+1; }; } }; //滑块MC事件处理,鼠标移出或释放时 huakuai_mc.onMouseUp = function() { //“滑块”停止拖动 this.stopDrag(); //停止文本随滑块滚动事件 delete this.onEnterFrame; //松开鼠标后,重新为文本框添加侦听器 wenben_txt.addListener(wenbenzhentingqi); }; //——————换用MOUSE对象的onMouseWheel方法结合侦听器实现滑块随鼠标滚球滚动 shubiaozhentingqi.onMouseWheel = function(delta) { //设定滚轮滚动一下,文本滚动一行,但如果您的文本域为“可选”,则会滚动四行,因为可选文本域默认的就有三行了 //另外,这行代码会导致在FLASH的任意位置滚动滚轮,文本域都会感应到 //如果你想回复正常状态,只需要将此行代码换为delta=1,不过此时如果您的文本域为“不可选”,则无法感应到滚轮; wenben_txt.scroll -= delta%2; huakuai_mc._y = Math.floor(ychushiweizhi+zongxiangsu*(wenben_txt.scroll-1)/(wenben_txt.maxscroll-1)); }; //——————点击滑块背景控制滚动 requ_mc.onMouseDown = function() { if (requ_mc.hitTest(_root._xmouse, _root._ymouse, true)) { //获取点击位置,并根据点击位置设置滚动 var dianjiweizhi = _ymouse; wenben_txt.scroll = (wenben_txt.maxscroll-1)*(dianjiweizhi-ychushiweizhi)/zongxiangsu+1; } }; //——————在文本框中监视行数变化(如果您不需要监视,可以删除下面的四行代码) wenben_txt.onScroller = function() { //在_root中的动态文本框中,显示总行数和当前行 _parent.zonghangshu_var = "总行数:"+wenben_txt.maxscroll; _parent.dangqianhang_var = "当前行:"+wenben_txt.scroll; }; |
Word教程网 | Excel教程网 | Dreamweaver教程网 | Fireworks教程网 | PPT教程网 | FLASH教程网 | PS教程网 |
HTML教程网 | DIV CSS教程网 | FLASH AS教程网 | ACCESS教程网 | SQL SERVER教程网 | C语言教程网 | JAVASCRIPT教程网 |
ASP教程网 | ASP.NET教程网 | CorelDraw教程网 |