我希望添加一个自我滚动功能到我的滚动字段,当用户将鼠标移到文本或任何控件上时暂停。我还是个编程新手,不知道该怎么做。
以下是工作卷轴的代码:
// ---- Scroll Bar Code ---- //
fscommand("allowscale", "false");
bar.useHandCursor = dragger.useHandCursor=false;
space = 20;
friction = 0.9;
speed = 4;
y = dragger._y;
top = main._y;
bottom = (main._y + mask_mc._height) - (main._height - space);
//when scroll button is selected
dragger.onPress = function() {
drag = true;
this.startDrag(false, this._x, this._parent.y, this._x, this._parent.y + this._parent.bar._height - this._height);
dragger.scrollEase();
};
//when scroll button is released
dragger.onMouseUp = function() {
this.stopDrag();
drag = false;
};
//when any of the scroll bar is pressed
bar.onPress = function() {
drag = true;
if (this._parent._ymouse > ((this._y + this._height) - this._parent.dragger._height)) {
this._parent.dragger._y = this._parent._ymouse;
this._parent.dragger._y = (this._y + this._height) - this._parent.dragger._height;
} else {
this._parent.dragger._y = this._parent._ymouse;
}
dragger.scrollEase();
};
//when scroll bar is released
bar.onMouseUp = function() {
drag = false;
};
//when scroll button is dragged
moveDragger = function (d) {
if ((dragger._y >= ((y + bar._height) - dragger._height) && d == 1) || (dragger._y <= y && d == -1)) {
clearInterval(myInterval);
} else {
dragger._y += d;
dragger.scrollEase();
updateAfterEvent();
}
};
//when up button is pressed
up_btn.onPress = function() {
myInterval = setInterval(moveDragger, 18, -1);
};
//when down button is pressed
down_btn.onPress = function() {
myInterval = setInterval(moveDragger, 18, 1);
};
//when up button is released
up_btn.onMouseUp = down_btn.onMouseUp = function () {
clearInterval(myInterval);
};
MovieClip.prototype.scrollEase = function() {
this.onEnterFrame = function() {
if (Math.abs(dy) == 0 && drag == false) {
delete this.onEnterFrame;
}
r = (this._y - y ) / (bar._height - this._height);
dy = Math.round((((top - (top-bottom) * r) - main._y) / speed) * friction);
main._y += dy;
};
};
//End Scroll Bar Code
dragger.onRollOver = function() {
dragger.useHandCursor = false;
}
// Start AutoScroll
var my_timedProcess:Number = setTimeout(autoScroll, 2000, "two second delay");
// Define AutoScroll
function autoScroll () {
scrollInterval = setInterval(moveDragger, 150, 1);
}
//Stop AutoScroll on Rollover
mask_mc.onRollOver = down_btn.onRollOver = up_btn.onRollOver = dragger.onRollOver = bar.onRollOver = function () {
clearInterval(scrollInterval);
};
//Start AutoScroll on RollOut
mask_mc.onRollOut = down_btn.onRollOut = up_btn.onRollOut = function () {
scrollInterval = setInterval(moveDragger, 150, 1);
};发布于 2014-09-20 00:08:58
首先,我想说您应该考虑使用actionscript 3.0而不是actionscript 2.0
现在来回答你的问题;这个代码对于自动滚动来说太大了。如果我理解您的需求,请正确尝试我的代码,您应该有一个良好的开端……
将您的段落/文本区域转换为movieclip,并为其指定实例名称textblock_mc
在时间线上:
mask_mc._height = 100; //---- edit to suit your need
var speed:Number = 1; //---- change scroll speed
var startOver = mask_mc._y = textblock_mc._y;
var endPoint = textblock_mc._height - mask_mc._height;
mask_mc._width = textblock_mc._width;
mask_mc._x = textblock_mc._x;
var i:Number = 0;
textblock_mc.setMask(mask_mc);
textblock_mc.onRollOver = function(){ //---- add more buttons if needed here
_root.onEnterFrame = scrollTxt;
}
textblock_mc.onRollOut = function(){ //---- add more buttons if needed here
delete _root.onEnterFrame;
}
up_button.onRelease = function (){
textblock_mc._y = startOver;
i=0;
}
function scrollTxt(){
i=i+speed;
if(i >= endPoint){
delete _root.onEnterFrame;
} else {
textblock_mc._y -= speed;
}
}这就是你所需要的。此外,如果手动放置mask_mc,还可以进一步减少代码。
发布于 2014-09-20 02:46:36
autoScroll的最终代码:
// Start AutoScroll
var my_timedProcess:Number = setTimeout(autoScroll, 2000, "two second delay");
// Define AutoScroll
function autoScroll () {
scrollInterval = setInterval(moveDragger, 150, 1);
}
//Stop AutoScroll on Rollover
mask_mc.onRollOver = down_btn.onRollOver = up_btn.onRollOver = dragger.onRollOver = bar.onRollOver = function () {
clearInterval(scrollInterval);
};
//Start AutoScroll on RollOut
mask_mc.onRollOut = down_btn.onRollOut = up_btn.onRollOut = function () {
scrollInterval = setInterval(moveDragger, 150, 1);
};https://stackoverflow.com/questions/25925991
复制相似问题