0

也许有人可以帮助我解决这个 Adob​​e Flash Actionscript 3.0 问题。

我正在尝试在屏幕的左侧和右侧大部分部分使用“按钮”制作时间线,以便当鼠标移动到屏幕的这些部分时可以擦洗时间线。按钮本身只是作为一种向用户显示他们需要将鼠标悬停在何处以使时间线朝该方向滚动的一种方式。

我已经能够使用下面的代码让时间线擦洗一次,但我想让它在用户将鼠标悬停在它上面的时间段内保持滚动。

我还放置了一个 If 语句,以防止时间线从屏幕上滚动出来。

目前,该代码仅使用一次,并在 X 轴上从左到右移动 15。我如何使它保持稳定地向左或向右移动,直到鼠标离开滚动按钮?

    //Scroll Logic
backScroll_btn.addEventListener(MouseEvent.ROLL_OVER, backScroll);

function backScroll(e:MouseEvent){
    if(timeLine.x < 1406.55){
        timeLine.x = timeLine.x + 15;}
}

forwardScroll_btn.addEventListener(MouseEvent.ROLL_OVER, forwardScroll);

function forwardScroll(e:MouseEvent){
    if(timeLine.x > 0){
        timeLine.x = timeLine.x - 15};
}
4

2 回答 2

0

我认为这可能有效,当项目滚动时让 enterframe 事件监听,并在每帧单元增加 X 鼠标滚出按钮。

backScroll_btn.addEventListener(MouseEvent.ROLL_OVER, backScroll);


function backScroll(e:MouseEvent):void
{
    addEventListener(Event.ENTER_FRAME,myButton);
    backScroll_btn.addEventListener(MouseEvent.ROLL_OUT, backScrollOut);
}

function backScrollOut(e:MouseEvent):void
{
    removeEventListener(Event.ENTER_FRAME,myButton);
}

function myButton(e:Event):void
{
    timeLine.x+=15;
}
于 2013-11-08T03:28:24.890 回答
0

由于您想要连续滚动,因此请使用输入帧事件侦听器来触发滚动。然后按钮将有两个侦听器触发任一侧的滚动开/关。

var scrollingBack:Boolean;
var scrollingForward:Boolean;
backScroll_btn.addEventListener(MouseEvent.ROLL_OVER, backScrollOn);
backScroll_btn.addEventListener(MouseEvent.ROLL_OUT, backScrollOff);
function backScrollOn(e:MouseEvent):void { scrollingBack=true; }
function backScrollOff(e:MouseEvent):void { scrollingBack=false; }
forwardScroll_btn.addEventListener(MouseEvent.ROLL_OVER, forwardScrollOn);
forwardScroll_btn.addEventListener(MouseEvent.ROLL_OUT, forwardScrollOff);
function forwardScrollOn(e:MouseEvent):void { scrollingForward=true; }
function forwardScrollOff(e:MouseEvent):void { scrollingForward=false; }
timeline.addEventListener(Event.ENTER_FRAME,doScroll);

function doScroll(e:Event):void {
    if (scrollingForward) {
         if(timeLine.x > 0){
            timeLine.x = timeLine.x - 15};
    } else if (scrollingBack) {
        if(timeLine.x < 1406.55){
            timeLine.x = timeLine.x + 15;}
    }
}
于 2013-11-08T03:28:41.737 回答