flash文本框滚动条
组件中有滚动条,可是把它拖到文本框之后,依然不可以滚动,因为字太多,图片太大的关系,需要一个滚动条,拖过去的滚动条直接在文本框的边缘建立了个竖条,请问接下来该怎么做...
组件中有滚动条,可是把它拖到文本框之后,依然不可以滚动,因为字太多,图片太大的关系,需要一个滚动条,拖过去的滚动条直接在文本框的边缘建立了个竖条,请问接下来该怎么做
展开
2个回答
展开全部
//%%%%%%%%%%%%%%%%接口变量%%%%%%%%%%%%//
//接收父剪辑文本域名字
var wenben_txt = _parent.wenben_txt;
//---------滚动初始化---------//
//此变量是滑块的初始高度,现在设置为最高,也就占满上、下按钮之间的空间
//此变量将在外部文本载入完成,滚动条高度设定的时候得到应用(第32行)
var chushigaodu = Math.floor(xia_btn._y-shang_btn._y-shang_btn._height);
//初始化滑块Y坐标,并记录
var ychushiweizhi = huakuai_mc._y=Math.round(shang_btn._y+shang_btn._height);
//小滑块不可见,上下按钮不可用
huakuai_mc._visible = false;
shang_btn.enabled = false;
xia_btn.enabled = false;
//%%%%%%%%%%%%%%%%滚动代码%%%%%%%%%%%%%%%%%%//
//////////为父剪辑的文字域注册侦听器,以侦听在文字域产生变化时,也就是在文本被载入进来时,执行下面的代码。这样就不用担心代码执行顺序问题!
var zhentingqi = new Object();
wenben_txt.addListener(zhentingqi);
//当文字域载入完成时,为什么触发onScroller事件,而不是onChange事件?
zhentingqi.onScroller = function() {
trace("----------------------");
//在_root中的动态文本框中,显示总行数和当前行
_parent.zonghangshu_var = "总行数:"+wenben_txt.maxscroll;
_parent.dangqianhang_var = "当前行:"+wenben_txt.scroll;
//判断滑块儿是否显示,并根据文本内容多少定义滑块高度
if (wenben_txt.maxscroll != 1) {
//小滑块可见,上下按钮可用
huakuai_mc._visible = true;
shang_btn.enabled = true;
xia_btn.enabled = true;
//定义一个高度因子,此因子随加载文本的增多,将无限趋向于1。
var gaoduyinzi = 1-(wenben_txt.maxscroll-2)/wenben_txt.maxscroll;
//根据高度因子初始化滑块的高度
huakuai_mc._height = Math.floor(chushigaodu*Math.pow(gaoduyinzi, 1/5));
//记录外部文本载入完成后,滑块的高度
trace("滑块高="+huakuai_mc._height);
}
//滑块滚动的总象素数
var zongxiangsu = xia_btn._y-shang_btn._y-shang_btn._height-huakuai_mc._height;
//定义平均象素,每一行所包含的像素数,即文本域每滚动一行,滑块需要移动的象素数。
var pingjunxiangsu = zongxiangsu/(wenben_txt.maxscroll-1);
//定义平均行数,每一像素包含的行数,即滑块每移动一象素,文本域在理论上应当滚动的行数(尽管非整数行在视觉上没有反映)。
var pingjunhangshu = (wenben_txt.maxscroll-1)/Math.floor(zongxiangsu);
//记录“滚动总像素”、“平均像素”和“平均行数”
trace("滚动总象素="+zongxiangsu);
trace("平均象素值="+pingjunxiangsu);
trace("平均行数值="+pingjunhangshu);
//——————定义上按钮
shang_btn.onPress = function() {
//记录按下按钮的时间点
anxiashijian = getTimer();
wenben_txt.scroll--;
// 使滑块儿移动到相应的位置。
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
//当按下按钮一定时间后,自动滚动文本
onEnterFrame = function () {
if (getTimer()-anxiashijian>500) {
wenben_txt.scroll--;
//使滑块儿移动到相应的位置。
//文本框现在的scroll值减1,然后乘以“平均像素”,得到它应该滚动的像素,然后再加上初始位置的Y坐标,就得到现在的应该滚动到的Y坐标
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
//跟踪滑块的Y坐标
trace("[滑块Y坐标]="+huakuai_mc._y);
}
};
};
shang_btn.onRelease = function() {
delete onEnterFrame;
delete anxiashijian;
};
//——————定义下按钮(原理与上按钮一样)
xia_btn.onPress = function() {
anxiashijian = getTimer();
wenben_txt.scroll++;
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
onEnterFrame = function () {
if (getTimer()-anxiashijian>500) {
wenben_txt.scroll++;
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
trace("[滑块Y坐标]="+huakuai_mc._y);
}
};
};
xia_btn.onRelease = function() {
delete onEnterFrame;
delete anxiashijian;
};
//——————滑块MC事件处理,当鼠标按下时
huakuai_mc.onPress = function() {
//开始拖动
this.startDrag(false,this._x,ychushiweizhi,this._x,xia_btn._y-huakuai_mc._height);
//使文本随滑块滚动
this.onEnterFrame = function() {
//在滚动过程中即时获得“滑块所处位置”
var xianzaiweizhi = Math.floor(this._y);
trace("现在位置="+xianzaiweizhi);
//先求出滑块现在Y坐标与其在最开始初始化时Y坐标的像素差值,然后用这个差值乘“每一象素所包含的行数”,就可以得到文本现在应该滚动到的行数了
//这里为什么要加1,可见scroll属性值应该是取正的,也就是说它会删除小数部分,而非采用四舍五入制?
wenben_txt.scroll = (xianzaiweizhi-ychushiweizhi)*pingjunhangshu+1;
//跟踪滚动的当前行
trace("[scroll值]="+Math.floor((xianzaiweizhi-ychushiweizhi)*pingjunhangshu+1));
//记录当在滑块上按钮下鼠标时,滑块的初始位置
trace("初始位置="+ychushiweizhi);
//跟踪滑块的现在位置
trace("[现在位置]="+xianzaiweizhi);
};
};
//滑块MC事件处理,鼠标移出或释放时
huakuai_mc.onRollOut = huakuai_mc.onMouseUp=function () {
// “滑块”停止拖动
this.stopDrag();
// 停止文本随滑块滚动事件
delete this.onEnterFrame;
};
//——————换用MOUSE对象的onMouseWheel方法结合侦听器实现滑块随鼠标滚球滚动
mouseListener = new Object();
Mouse.addListener(mouseListener);
mouseListener.onMouseWheel = function(delta) {
delta = 1;
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
};
};
//接收父剪辑文本域名字
var wenben_txt = _parent.wenben_txt;
//---------滚动初始化---------//
//此变量是滑块的初始高度,现在设置为最高,也就占满上、下按钮之间的空间
//此变量将在外部文本载入完成,滚动条高度设定的时候得到应用(第32行)
var chushigaodu = Math.floor(xia_btn._y-shang_btn._y-shang_btn._height);
//初始化滑块Y坐标,并记录
var ychushiweizhi = huakuai_mc._y=Math.round(shang_btn._y+shang_btn._height);
//小滑块不可见,上下按钮不可用
huakuai_mc._visible = false;
shang_btn.enabled = false;
xia_btn.enabled = false;
//%%%%%%%%%%%%%%%%滚动代码%%%%%%%%%%%%%%%%%%//
//////////为父剪辑的文字域注册侦听器,以侦听在文字域产生变化时,也就是在文本被载入进来时,执行下面的代码。这样就不用担心代码执行顺序问题!
var zhentingqi = new Object();
wenben_txt.addListener(zhentingqi);
//当文字域载入完成时,为什么触发onScroller事件,而不是onChange事件?
zhentingqi.onScroller = function() {
trace("----------------------");
//在_root中的动态文本框中,显示总行数和当前行
_parent.zonghangshu_var = "总行数:"+wenben_txt.maxscroll;
_parent.dangqianhang_var = "当前行:"+wenben_txt.scroll;
//判断滑块儿是否显示,并根据文本内容多少定义滑块高度
if (wenben_txt.maxscroll != 1) {
//小滑块可见,上下按钮可用
huakuai_mc._visible = true;
shang_btn.enabled = true;
xia_btn.enabled = true;
//定义一个高度因子,此因子随加载文本的增多,将无限趋向于1。
var gaoduyinzi = 1-(wenben_txt.maxscroll-2)/wenben_txt.maxscroll;
//根据高度因子初始化滑块的高度
huakuai_mc._height = Math.floor(chushigaodu*Math.pow(gaoduyinzi, 1/5));
//记录外部文本载入完成后,滑块的高度
trace("滑块高="+huakuai_mc._height);
}
//滑块滚动的总象素数
var zongxiangsu = xia_btn._y-shang_btn._y-shang_btn._height-huakuai_mc._height;
//定义平均象素,每一行所包含的像素数,即文本域每滚动一行,滑块需要移动的象素数。
var pingjunxiangsu = zongxiangsu/(wenben_txt.maxscroll-1);
//定义平均行数,每一像素包含的行数,即滑块每移动一象素,文本域在理论上应当滚动的行数(尽管非整数行在视觉上没有反映)。
var pingjunhangshu = (wenben_txt.maxscroll-1)/Math.floor(zongxiangsu);
//记录“滚动总像素”、“平均像素”和“平均行数”
trace("滚动总象素="+zongxiangsu);
trace("平均象素值="+pingjunxiangsu);
trace("平均行数值="+pingjunhangshu);
//——————定义上按钮
shang_btn.onPress = function() {
//记录按下按钮的时间点
anxiashijian = getTimer();
wenben_txt.scroll--;
// 使滑块儿移动到相应的位置。
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
//当按下按钮一定时间后,自动滚动文本
onEnterFrame = function () {
if (getTimer()-anxiashijian>500) {
wenben_txt.scroll--;
//使滑块儿移动到相应的位置。
//文本框现在的scroll值减1,然后乘以“平均像素”,得到它应该滚动的像素,然后再加上初始位置的Y坐标,就得到现在的应该滚动到的Y坐标
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
//跟踪滑块的Y坐标
trace("[滑块Y坐标]="+huakuai_mc._y);
}
};
};
shang_btn.onRelease = function() {
delete onEnterFrame;
delete anxiashijian;
};
//——————定义下按钮(原理与上按钮一样)
xia_btn.onPress = function() {
anxiashijian = getTimer();
wenben_txt.scroll++;
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
onEnterFrame = function () {
if (getTimer()-anxiashijian>500) {
wenben_txt.scroll++;
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
trace("[滑块Y坐标]="+huakuai_mc._y);
}
};
};
xia_btn.onRelease = function() {
delete onEnterFrame;
delete anxiashijian;
};
//——————滑块MC事件处理,当鼠标按下时
huakuai_mc.onPress = function() {
//开始拖动
this.startDrag(false,this._x,ychushiweizhi,this._x,xia_btn._y-huakuai_mc._height);
//使文本随滑块滚动
this.onEnterFrame = function() {
//在滚动过程中即时获得“滑块所处位置”
var xianzaiweizhi = Math.floor(this._y);
trace("现在位置="+xianzaiweizhi);
//先求出滑块现在Y坐标与其在最开始初始化时Y坐标的像素差值,然后用这个差值乘“每一象素所包含的行数”,就可以得到文本现在应该滚动到的行数了
//这里为什么要加1,可见scroll属性值应该是取正的,也就是说它会删除小数部分,而非采用四舍五入制?
wenben_txt.scroll = (xianzaiweizhi-ychushiweizhi)*pingjunhangshu+1;
//跟踪滚动的当前行
trace("[scroll值]="+Math.floor((xianzaiweizhi-ychushiweizhi)*pingjunhangshu+1));
//记录当在滑块上按钮下鼠标时,滑块的初始位置
trace("初始位置="+ychushiweizhi);
//跟踪滑块的现在位置
trace("[现在位置]="+xianzaiweizhi);
};
};
//滑块MC事件处理,鼠标移出或释放时
huakuai_mc.onRollOut = huakuai_mc.onMouseUp=function () {
// “滑块”停止拖动
this.stopDrag();
// 停止文本随滑块滚动事件
delete this.onEnterFrame;
};
//——————换用MOUSE对象的onMouseWheel方法结合侦听器实现滑块随鼠标滚球滚动
mouseListener = new Object();
Mouse.addListener(mouseListener);
mouseListener.onMouseWheel = function(delta) {
delta = 1;
huakuai_mc._y = ychushiweizhi+pingjunxiangsu*(wenben_txt.scroll-1);
};
};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询