Flash AS2 Auto Scroller

时间:2011-05-04 06:45:24

标签: flash variables numbers actionscript-2

我在AS2中有这段代码:

滚动条的自动速度为:

var autoSpeed:Number = 2;

我希望它更慢,但是当我减少数字时,滚动面不会移动。

我该如何解决这个问题。

感谢。

function scrolling(){
var scrollHeight:Number = scrollTrack._height;
var contentHeight:Number = contentMain._height;
var scrollFaceHeight:Number = scrollFace._height;
var maskHeight:Number = maskedView._height;
var initPosition:Number = scrollFace._y=scrollTrack._y;
var initContentPos:Number = contentMain._y;
var finalContentPos:Number = maskHeight-contentHeight+initContentPos;
var left:Number = scrollTrack._x;
var top:Number = scrollTrack._y;
var right:Number = scrollTrack._x;
var bottom:Number = scrollTrack._height-scrollFaceHeight+scrollTrack._y;
var dy:Number = 0;
var speed:Number = 10;
var moveVal:Number = (contentHeight-maskHeight)/(scrollHeight-scrollFaceHeight); // 

var autoSpeed:Number = 2;
var autoIsOn:Boolean = true;

this.onEnterFrame = function() {

    if (contentMain._y-speed>finalContentPos) {
            if (scrollFace._y>=bottom) {
                scrollFace._y = bottom;
            } else {
                scrollFace._y += autoSpeed/moveVal;
            }
            contentMain._y -= autoSpeed;
        } else {
            scrollFace._y = bottom;
            contentMain._y = finalContentPos;
            delete this.onEnterFrame;
        }
};

scrollFace.onPress = function() {
    var currPos:Number = this._y;
    startDrag(this, false, left, top, right, bottom);
    this.onMouseMove = function() {
        dy = Math.abs(initPosition-this._y);
        contentMain._y = Math.round(dy*-1*moveVal+initContentPos);
        delete this.onEnterFrame;
    };
};
scrollFace.onMouseUp = function() {
    stopDrag();
    delete this.onMouseMove;
    };
};

1 个答案:

答案 0 :(得分:0)

尝试临时调整onEnterFrame函数。如果你减慢两次滚动调用之间的帧数,看起来你的值滚动得更慢。

this.onEnterFrame = function() {

var count:Number = 0; // create a counter

if (count > 5) // change 5 to value you want in order to slow down (higher value = slower scrolling)
{
    if (contentMain._y-speed>finalContentPos) {
            if (scrollFace._y>=bottom) {
                scrollFace._y = bottom;
            } else {
                scrollFace._y += autoSpeed/moveVal;
            } 
            contentMain._y -= autoSpeed;
    } else {
            scrollFace._y = bottom;
            contentMain._y = finalContentPos;
            delete this.onEnterFrame;
    }
    count = 0; // reset the counter
}
else
{
    count++; // increment the counter
}
};