我正在创建这个网站,只有很少的吉祥物,我将实施一个“眨眼计时器”,我会让每个吉祥物都闪烁。
我的问题是:我如何实现(以及它有多长?)闪烁和眨眼之间的延迟,在任何语言上(我可能会使用Javascript,但现在无关紧要)。
是否有关于“闪烁算法”或类似内容的资源?
编辑:我知道如何使用setTimeout和setInterval,我的问题更多的是关于算法而不是实现本身。
最终结果:
var blink = {
delay: function() {
return Math.random() * 8000 + 2000;
},
duration: function() {
return 100 + Math.floor(Math.random() * 100);
},
blinkAgain: function() {
return (Math.random() < .2);
},
betweenBliks: function() {
return blink.duration() / 2;
}
};
$.fn.blink = function(continueBlinking) {
var $element = $(this);
// Star the blink
$element.addClass('blink');
// Finish the blink
setTimeout(function() {
$element.removeClass('blink');
// Change of blinking again
if (blink.blinkAgain()) {
setTimeout(function() {
$element.blink(false);
}, blink.betweenBliks());
}
}, blink.duration());
// Continue blinking?
if (continueBlinking) {
setTimeout(function() {
$element.blink(true);
}, blink.delay());
}
};
答案 0 :(得分:5)
眨眼率变化,但平均每五秒眨眼一次。这是
每天相当于17,000次,每年625万次。
假设你有一个功能blink
执行“闪烁”,你可能只想做这样的事情:
setInterval(blink, 5000); // 5000ms i.e. 5s
如果你想要在闪烁中多一点“随机性”,你可以做以下事情:
function blink() {
[...] // The blinking
setTimeout(blink, 5000 + ((Math.random() - 0.5) * 2000));
}
如果我的计算正确,那将在4000到6000ms之间以随机方式调用blink函数,假设Math.random()
返回介于0.0和1.0之间的值,因此“Math.random() - 0.5”将介于-0.5和0.5之间。那个时间2000将导致-1000到1000之间的值。
答案 1 :(得分:2)
我们倾向于“人性化”吉祥物这样的东西,所以你可以用人类的眨眼率让吉祥物看起来很自然。
人类通常每分钟眨眼10次,眨眼间间隔2-10秒。 [source]
使闪烁之间的延迟在2到10秒之间随机变化,最终平均每分钟变为10次:
function blink() {
// do the blinking stuff
window.setTimeout(blink, Math.random() * 8000 + 2000);
}
人类的大脑非常擅长拾取模式,所以如果你让吉祥物以一定的间隔闪烁,游客很快就会接受,并认为眨眼看起来是人为的。
检查一下它的样子。实际上正常的闪烁间隔可能看起来不正常,你可能不得不增加间隔,特别是如果你在彼此旁边显示几个吉祥物。
答案 2 :(得分:0)
你的眨眼功能可能会在DOM中移动一些东西或操纵像这样的图像
var blink = function () {
// do some work!
}
然后您可能希望使用setInterval()
来处理闪烁间隔。
setInterval(blink, 3000)
请注意,setInterval的时间以毫秒为单位,因此3000是“每3秒”。希望这会有所帮助。如果你想要每三秒钟没有正确的话,你可以拥有一个动态数字。例如,您可以使用一个随机调用的函数slowDown() and speedUp()
来设置实际的setTimeout()间隔。
在参考算法时,这里有一段摘录,描述了一些困难。
人类眨眼表达心灵深层信息的过程 模糊性和随机性的不确定性。基于云理论的方法 提出实现虚拟人眨眼的不确定性控制。 设计了眼睛的最大开角云和眨眼间隔云。 提出了一种基于云的眨眼控制算法。结果 将其与确定性方法进行比较表明该算法 随机眼睛最大开放可以产生眨眼控制曲线 角度和闪烁间隔,实现眨眼的不确定性控制。