2010-01-20 42 views
0

我有我在網上找到的代碼,它可以無限旋轉的圖庫,現在我的問題是在輸入幀時它會跳轉並且速度太快。我希望它能夠在您將徽標懸停之後儘快完成。如何在不減少fps的情況下減慢AS3中的動畫

下面是代碼:

//Import TweenMax 
import com.greensock.TweenMax; 

//Save the horizontal center 
var centerX:Number = stage.stageWidth/2; 

//Save the width of the whole gallery 
var galleryWidth:Number = infiniteGallery.width; 

//Speed of the movement (calculated by the mouse position in the moveGallery() function) 
var speed:Number = 0; 

//Add an ENTER_FRAME listener for the animation 
addEventListener(Event.ENTER_FRAME, moveGallery); 

function moveGallery(e:Event):void { 

//Calculate the new speed 
speed = -(0.02 * (mouseX - centerX)); 

//Update the x coordinate 
infiniteGallery.x+=speed; 

//Check if we are too far on the right (no more stuff on the left edge) 
if (infiniteGallery.x>0) { 

    //Update the gallery's coordinates 
    infiniteGallery.x= (-galleryWidth/2); 
} 

//Check if we are too far on the left (no more stuff on the right edge) 
if (infiniteGallery.x<(-galleryWidth/2)) { 

    //Update the gallery's coordinates 
    infiniteGallery.x=0; 
} 
} 

和這裏是demo »

回答

2

所述卷軸的速度是基於三兩件事:

1-幀速率。 ENTER_FRAME事件處理程序在每一幀被調用,因此直接受幀速率的影響。

2-速度阻尼數。在你的情況下,這等於0.02。如果您想減慢滾動速度,請將其設置爲較小的數字。以一半的速度嘗試0.01。

3-鼠標指針到舞臺中心x座標的距離。鼠標指針和舞臺中心之間的差異乘以你的速度阻尼數。如果你想停止運動,當你在或圍繞中心改變你的代碼如下:

var buffer:Number = 50; 

function moveGallery(e:Event):void { 
    var diff = mouseX - centerX; 
    if (Math.abs(diff) > buffer) 
     speed = -(0.02 * (diff + (diff > 0 ? -buffer : buffer))); 
    else 
     speed = 0; 

的要求:

var centerX:Number = stage.stageWidth/2; 
var galleryWidth:Number = infiniteGallery.width; 
var speed:Number = 0; 
addEventListener(Event.ENTER_FRAME, moveGallery); 

var buffer:Number = 100; 

function moveGallery(e:Event):void { 
    var diff = mouseX - centerX; 
    if (Math.abs(diff) > buffer) 
     speed = -(0.02 * (diff + (diff > 0 ? -buffer : buffer))); 
    else 
     speed = 0; 

    infiniteGallery.x += speed; 

    if (infiniteGallery.x>0) { 
     infiniteGallery.x = -galleryWidth/2; 
    } 

    if (infiniteGallery.x < -galleryWidth/2) { 
     infiniteGallery.x = 0; 
    } 
} 
+0

謝謝你,但我是新來的這一切動作事情會你介意複製粘貼整個代碼的變化。請。 – 2010-01-20 16:58:12

+0

我是新來的整個編程的事情。你會介意到我家來做我的工作/家庭作業/項目嗎? Kthxbye – 2010-01-20 19:05:54

+0

謝謝,但出現錯誤語法錯誤:「else」未指向 – 2010-01-21 14:45:15