javascript - JQuery 过渡动画

标签 javascript jquery animation setinterval

该程序从 json-object Employees 数组中随机选择两名员工,winnerPos 已定义。

为了更好的用户体验,我编写了这些功能来一张一张地更换图片。当随机选择的人出现在屏幕上时,动画停止。

按下start按钮时将触发slideThrough函数。

function slideThrough() {
    counter = 0;
    start = true;

    clearInterval(picInterval);
    picInterval = setInterval(function () {
        changePicture();
    }, 500);
}   

function changePicture() {
    if (start) {                
        if (counter > winnerPos) {
            setWinner();
            start = false;
            killInterval();
        } else {
            var employee = Employees[counter];

            winnerPic.fadeOut(200, function () {
                this.src = 'img/' + employee.image;
                winnerName.html(employee.name);
                $(this).fadeIn(300);
            });              

            counter++;
        }
    }
}

问题是动画运行不流畅。起初它可以工作,但并不完美。第二次过渡以不规则的方式发生,即不同的速度和淡入/淡出因图片而异。

有人可以帮我微调过渡吗?

最佳答案

我会避免使用 setInterval() 并在对 .fadeIn() 的调用中添加一个函数来启动下一张图片的动画。

它看起来像这样:

function changePicture(pos) {
    pos = pos || 0;
    if (pos <= winnerPos) {
        var employee = Employees[pos];

        winnerPic.fadeOut(200, function() {
            this.src = 'img/' + employee.image;
            winnerName.html(employee.name);
            $(this).fadeIn(300, function() {
                changePicture(pos + 1);
            });
        });
    } else {
        setWinner();
    }
}

要启动动画,您可以调用不带任何参数的 changePicture(),如下所示。

changePicture();

jsfiddle

关于javascript - JQuery 过渡动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25467821/

相关文章:

javascript - 我可以移动两个文件夹的文件吗? Dropzone.js

javascript - 检查占位符文本中是否存在 null 或空值

css - svg 动画浏览器支持

javascript - 如何将我的图像淡入容器中?

javascript - 消费者的服务 'AnalyticsDefaultGroup' 的配额 'USER-100s' 和限制 'analyticsreporting.googleapis.com' 的 token 不足

jquery - 使用 Html.ValidationMessage 通过 jQuery 进行 ASP.NET MVC 客户端验证?

javascript - 为什么当我在此 JavaScript 对象上使用反射时,我看不到其原型(prototype)对象中定义的属性?

animation - Sencha Touch 动画选项

wpf - 如何离散动画 GridLength 从 "Auto"到 "*"?

javascript - 向下滚动时背景图像 50% 不透明度