2010-06-15 193 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