2012-06-14 130 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.