2010-06-15 196 views
0

我想根据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);   
} 

回答

0

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

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

你不是应该检查mouseY agains的thumbBounds.ythumbBounds.height

至于不稳定,这可能与电影的帧率,图像的大小和数量有关。这也取决于你的价值的大小。我会尝试使用插值(补间)一些方法。计算容器的最终目的地并使用TweenerTweenLite将其设置为朝向那边。

例如

TweenLite.to(thumbContainer.x, 0.5, { x: thumbContainer.x + Math.round(-xdist/10) }); 

这将导致thumbcontainer当前位置和新的位置会发生顺畅的运动超过半秒(而不是立即)。

+0

感谢您的回复,我会尝试一下您的建议。 – Rudy 2010-06-16 18:17:46