首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不同时间的序列循环动画

不同时间的序列循环动画
EN

Stack Overflow用户
提问于 2014-07-05 15:55:21
回答 1查看 36关注 0票数 0

动画已经拍摄,但我需要让这个光环如下:

代码语言:javascript
复制
1) Visitor arrives - halo is completely off
2)After 1 second the halo flickers quickly (3-4 flickers) then is full bright (no flicker)
3) After 1 second we get  flicker again 2-3 flickers then returns to full bright.
4) Halo remains full bright - no cycling to 1

jQuery

代码语言:javascript
复制
var haloRob = ".halo";

    function flash(){
        var del = Math.floor((Math.random()*300)+10);
        $(haloRob).toggleClass("display-halo").delay(del);
        $(haloRob).promise().done(function(){
            flash();
        });
    }

$(haloRob).animate({'marginTop': '27px', opacity: 1}, 1000, flash());

小提琴

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-05 18:41:04

让您的闪光灯进行倒计时,并在完成指定数量的关闭/开启周期时调用回调。

JSFiddle:http://jsfiddle.net/TrueBlueAussie/A5YqV/7/

代码语言:javascript
复制
var haloRob = ".halo";

function flash(count, callback) {
    if (count > 0) {
        var del = Math.floor((Math.random() * 300) + 10);
        $(haloRob).toggleClass("display-halo").delay(del);
        $(haloRob).promise().done(function () {
            flash(count - 1, callback);
        });
    }
    else
    {
        if (callback) {
            callback();
        }
    }
}

$(haloRob).animate({
    'marginTop': '27px',
    opacity: 1
}, 1000, function () {
    flash(~~((Math.random() * 1 + 3)) * 2, function(){
        setTimeout(function(){flash(~~((Math.random() * 1 + 2)) * 2, function(){
            alert("done");
        });}, 1000);
    })
});

注:~~只是将浮点数转换为整数的一种简单方法。

*注:随机计数必须加倍,以确保最终状态为“开启”。

代码可以进一步简化,但应该会使您朝着正确的方向前进。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24588139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档