在点击时循环播放动画

时间:2013-05-12 07:46:37

标签: javascript cycle requestanimationframe

从单个图像开始,我有三个动画,我想让它在每次单击图像时循环显示。 我创建了这个开关:

function switcher() {
// counts to 4 then resets to 0
x = x+1
if (x>3) {x = 0}

// Fire OFF
if (x == 0) {
    // animation code ?
}

// Fire LARGE
if (x == 1) {
// animation code ?    
}

// Fire MEDIUM
if (x == 2) {
// animation code ?
}

// Fire SMALL
if (x == 3) {
// animation code ?
}}

1个静态+3个动画状态。

我的动画使用了Paul Irish的requestAnimframe Polyfill 然后:

function animate() 
    {   
    setTimeout(function()
        {
        requestAnimFrame( animate );        
        draw();   
        }, 1000 / 2);
    } 

function draw()    
    {   
    flame=document.getElementById('myimage')
    if (flame.src.match("Images/lfire1.png"))
        {
        flame.src="Images/lfire2.png";
        }
    else
        {
        flame.src="Images/lfire1.png";
        }     
    }   

每个动画基本上都是相同的代码但具有不同的图像。 该代码在我直接测试时有效,但当我复制到交换机时,它将无法正常工作。

我曾尝试使用多种方法将这些插入到我的交换机中,但似乎无法正常工作。 有小费吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

我不清楚你如何调用切换器()方法,但我怀疑这个问题可能与Javascript处理setTimeout()的方式有关。

请记住,当您在Javascript中调用setTimeout()时,脚本本身不会停止,直到超时结束。相反,它会生成一个处理指定超时的进程,然后继续执行代码。

如果你使用一个方法和一个计数器链接你的动画(在调用方法时持续存在的东西),这样当调用该方法时它会执行它的动画,然后在它再次调用之前检查计数器是否小于2 setTimeout(),你应该没问题。

对不起,如果我不在这里。基于一个重要假设进行操作:您正在使用setTimeout()来调用切换器()。

我希望这会有所帮助。