调用另一个函数时不会停止

Function not stopping when calling another one

本文关键字:另一个 函数 调用      更新时间:2023-09-26

我对一件简单的事情感到困扰。

我有一个div,点击时,一个胺化开始(图像变化的无限循环,模拟动画gif)。

但是,当我单击另一个div 时,第一个需要停止,然后只启动另一个动画,这将继续到每个动画(总共 8 个)。

下面是一个图像循环的代码:

var t1;
var t2;
var anim1 = new Array ('img/testes2/anim1_1.png','img/testes2/anim1_2.png');
var anim2 = new Array ('img/testes2/anim2_1.png','img/testes2/anim2_2.png');
var index = 1;
var verifica1 = 0;
var verifica2 = 0;

function rotateImage1(){
$('#imagemPrinc').fadeOut(0, function(){
    $(this).attr('src', anim1[index]);
    $(this).fadeIn(0, function(){
        if (index == anim1.length-1){
            index = 0;
        }
        else{
            index++;
        }
    });
});
return false;
}
function stopTimer1(){
if(verifica1 = 1){
    clearInterval(t2);
}
}
function muda1(){
if (verifica1 = 1){
    //stopTimer2();
    //$('#bgImagem').css({'background-image':'url(img/testes2/anim1_1.png)'});
    t1 = setInterval(rotateImage1,500);
}
}

第二个动画的相同功能。验证变量和 stopTimer 函数,我试图让一个停止,另一个播放,但似乎不起作用。这就是它在代码上注释的原因。

查看正在运行的代码会更容易,所以就是这样---这里---可点击的div是那两个红色方块。

有人可以帮我!?

谢谢!

clearTimeout 将 setInterval 函数返回的计时器 id 作为参数(这里是 t1)。

不应使用持续时间为 0 的淡出和淡入,而应仅使用隐藏和显示。

顺便说一句,您可以简化此块:

   if (index == anim1.length-1){
        index = 0;
    }
    else{
        index++;
    }

  index = [(index+1)%anim1.length];

这是非常错误的:

if(verifica1 = 1){

这不是一个测试:它总是改变验证1并且总是正确的。你可能想要==。

您的代码中是否有(自愿)设置 verifica1 的点?