基于mouseY的垂直滚动

时间:2010-07-05 15:58:23

标签: flash actionscript-3 actionscript

我要编写一个简单的方法,允许我将动画片段移动到另一个中,例如在http://www.cballestimenti.it/中(我要将它移动到垂直方向而不是水平方向)。

我写了这个简单的代码,但它似乎无法正常工作......任何人都可以帮助我吗?非常感谢!

public function factor():void
{
    thumbs.addEventListener(MouseEvent.MOUSE_MOVE, moveSlide);
    factor = ((content.height)/container.height);
}

private function moveSlide(e:MouseEvent):void
{
    if (container.mouseX>=0 && container.mouseX<=container.width && container.mouseY>=0 && container.mouseY<=container.height)
    {
        TweenMax.to(content, 0.3, { y:(-(container.mouseY)*factor) });
    }
}

1 个答案:

答案 0 :(得分:1)

如果你告诉我们为什么或如何“不正常”会更好。并且告诉我们你得到的任何错误。

我确实看到了一些错误。首先,您要设置一个名为factor的公共方法,然后在该方法中,将factor设置为一个数字!那么factor是什么?它是函数还是数字?

其次,我认为你的范围问题。由于您没有解释资产的布局,我假设您有三个MovieClip,称为容器,内容和拇指。但我不知道内容是否在容器内。我不明白你为什么会把MovieClip称为拇指和内容。

我要忽略拇指MC而只是使用内容。我将假设内容MC在容器MC内。我想出了这个:

var maxHeight:Number = 400;
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveSlide);

function moveSlide(e:MouseEvent):void
{
    var mouseFactor:Number = container.mouseY / maxHeight;
    var targetY:Number = (container.content.height - maxHeight) * -mouseFactor;
    container.content.y = targetY;
}

首先尝试让它在没有所有补间内容的情况下工作。然后,一旦你的数学工作,就可以很容易地添加效果。