鼠标移动平移

时间:2010-06-15 22:48:08

标签: actionscript-3

我正在尝试根据mouseX位置水平滚动一系列缩略图。我可以让它滚动,但它非常不稳定,由于某种原因,它不会读取我的开始和结束数字,所以它将停止滚动。谁能指出我正确的方向?感谢。

var thumbBounds:Object = new Object(); 
thumbBounds = thumbContainer.getBounds(this); 
thumbContainer.addEventListener(MouseEvent.MOUSE_OVER, setScrolling); 

private function setScrolling(me:MouseEvent):void         
{             
    thumbContainer.removeEventListener(MouseEvent.MOUSE_OVER, setScrolling);
    stage.addEventListener(Event.ENTER_FRAME, scrollThumbs);         
} 

private function scrollThumbs(e:Event):void         
{             
    if(mouseX <= thumbBounds.x || mouseX > thumbBounds.width || 
       mouseX < thumbBounds.y || mouseX > thumbBounds.height)
    {                 
        thumbContainer.addEventListener(MouseEvent.MOUSE_OVER, setScrolling); 
        stage.removeEventListener(Event.ENTER_FRAME, scrollThumbs);             
    } 

    if(thumbContainer.x >= 0)             
    {                 
        thumbContainer.x = 0;             
    }             

    if(thumbContainer.x <= -842)            
    {                 
        thumbContainer.x = -842;            
    }             

    var xdist:Number = new Number();             
    xdist = mouseX - 382;             
    thumbContainer.x += Math.round(-xdist / 10);         
}

1 个答案:

答案 0 :(得分:0)

我立即看到的一个错误是:

if(mouseX <= thumbBounds.x || mouseX > thumbBounds.width || 
   mouseX < thumbBounds.y || mouseX > thumbBounds.height)

你不应该再次检查mouseYthumbBounds.y的{​​{1}}吗?

关于波动性,可能与电影的帧速率,图像的大小和数量有关。它还取决于thumbBounds.height值的大小。我尝试使用插值(补间)一些方法。计算容器的最终目的地,并使用TweenerTweenLite为其设置动画。

e.g。

xdist

这将导致TweenLite.to(thumbContainer.x, 0.5, { x: thumbContainer.x + Math.round(-xdist / 10) }); 当前位置和新位置之间的移动将在半秒内(而不是立即)顺利进行。