2012-06-14 173 views
-1

我有一個聲明應該向前和向後移動圖像,但它似乎只將我的動畫向前移動..一次。如果else語句似乎不工作

這是我怎麼一直在想:

var rect1; 
var rect2; 
var xEnd = 50; 
var xEnd2 = 150; 

function init() { 
    paper = Raphael("loadSVG"); 
    rect1 = paper.rect(150, 20, 50, 50); 
    rect1.attr({ 
     fill: "#ffaaaa", 
     "stroke-width": 3 
    }); 
}; 

function moveRect1() { 
    if (rect1.animate({ 
     x: xEnd 
    })) { 
     rect1.animate({ 
      x: xEnd 
     }); 
    } 
    else { 
     rect1.animate({ 
      x: xEnd2 
     }); 
    } 
}; 

所以我的問題是,它只能移動我的動畫一次50,但如果我再次按下按鈕沒有任何反應。

有什麼想法?

+1

在您收到答案後不要更改您的問題。它使它們過時而荒謬。 – 2012-06-14 17:52:44

回答

2

這將永遠是true ...

if (rect1.animate({x: xEnd})) { 

...因爲你傳遞對象到if,和對象總是如此。

我假設你的意思是通過rect1的某些屬性來進行評估。

enter image description here

^^------------------^^ 
+0

那麼,我得到了那個公園,所以我用不同的方式編寫了代碼。當我按下開始按鈕兩次時,動畫工作但奇怪,因爲我希望開始按鈕直接從X值重新開始動畫=/ – Dymond

+1

@FelipeOtarola:所以第一次它應該到'xEnd',然後下一次它轉到'xEnd2',然後下一次返回到'xEnd',等等,來回? – 2012-06-14 14:16:57

+0

確切的說,它可以工作,但是當我按兩次開始時,它開始表現瘋狂怪異。我將更新我的代碼以向您展示。 – Dymond

1

我想我看到的問題是什麼。每次你點擊你的按鈕,你實際上都會在已經運行的那個之上設置另一個動畫循環。所以說你的廣場是正確的,然後離開。如果您點擊左邊的循環,則新的動畫適用於右上角。我試圖說明這一點here。點擊小綠色方塊開始你的第一個週期。每次點擊都會開始一個新的循環。每個週期都會嘗試改變顏色。當你多次點擊它時,你會發現,以及正方形的顫抖,隨着每個動畫循環的出現,顏色都會改變。

按鈕上的單擊事件只需要在開始下一個動畫循環之前停止現有動畫(rect1.halt())。

希望有所幫助。

N.