我正在尝试制作一种随机文本效果,有点像电影战争游戏(马修布罗德里克)结尾的那种效果。这个想法是当用户将鼠标悬停在单词中的一个字母上时,让单个字母随机变化。最终在很短的时间后,这封信最终会被“解码”,这意味着它最终会出现在正确的字母或数字上。我已经建立了基本效果,但我正在努力的部分是设置计时器。我想在悬停事件和解码字符的实际显示之间创建一个小的延迟。但是,当我添加 settimeout 时。脚本中断并且似乎堆叠了计时器。我不确定我做错了什么。下面是我到目前为止的代码..任何帮助都会很棒。
function setDecodedChar(object){
var decodedMessage = "HELLO WORLD";
var index = object.attr('class').substring(4);
console.log(index);
object.html(decodedMessage[index]);
}
function changeChar(object){
var randomchar = getrandomChar();
object.html(randomchar);
}
function getrandomChar(){
var char = "";
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
char = possible.charAt(Math.floor(Math.random() * possible.length));
return char;
}
$(function() {
typesetting.letters('.title-text');
var target = $(".title-text").children();
console.log(target);
var timer;
var gate = true;
$(target).hover(function(){
var charChar = $(this);
//on hover-over
if(gate){
gate = false;
timer=setInterval(function(){
changeChar(charChar);
},100);
}
},function(){
//on hover-out
setTimeout(function(){ //<-- breaks here
clearInterval(timer)
setDecodedChar($(this));
},1000);
gate = true;
}
);
});
这是我目前正在使用的效果的 jsfiddle。 http://jsfiddle.net/thesnooker/htsS3/