gpt4 book ai didi

JavaScript 眨眼动画

转载 作者:技术小花猫 更新时间:2023-10-29 12:14:49 24 4
gpt4 key购买 nike

我目前正在尝试学习 JavaScript 并尝试很多东西,但就目前而言,我的 JS 技能仍然非常有限。我创建了一个小游戏,其中有一个随机出现的带有兔子头的盒子,用户必须尽快点击它们。

所以我用间隔动画创建了兔子,兔子每 2 秒闭上眼睛并睁开眼睛。现在我觉得有点愚蠢,但我无法让动画按我想要的方式工作。现在,兔子每 2 秒闭上眼睛,然后每 2 秒再次睁开眼睛。但是,我希望它只眨眼,这意味着眼睛应该闭上片刻然后再睁开,这样兔子每 2 秒眨一次眼。然后我也希望它随机地有时只眨一次眼,有时眨眼两次。不确定这是否简单,而且我只是对数小时的编码和学习新事物视而不见,但看来我可能需要你的帮助。

Here is a fiddle整个事情的现状。

您可以看到在 fiddle 中使用的完整代码。我不想在代码部分发布整个网站,但我认为我的动画感兴趣的部分。

这里是眨眼的js代码:

var eyeleft = document.getElementById("eyeleft");
var eyeright = document.getElementById("eyeright");

window.onload = setInterval(function() {
eyeleft.className = (eyeleft.className != 'closedeyeleft' ? 'closedeyeleft' : 'eyeleft');
eyeright.className = (eyeright.className != 'closedeyeright' ? 'closedeyeright' : 'eyeright');
}, 2000);

接下来是 HTML

<div id="shape" class="game-shapes">
<div class="ears left"></div>
<div class="ears right"></div>
<div id="eyeleft" class="eyeleft"></div>
<div id="eyeright" class="eyeright"></div>
<div id="mouth">
<div id="tooth"></div>
<div id="tongue"></div>
</div>
</div>

现在是 CSS

.game-shapes {
height: 80px;
width: 80px;
cursor: pointer;
opacity: 0;
position: relative;
transition: opacity ease-in-out .2s;
}
.game-shapes div {
position: absolute;
}
.eyeleft,
.eyeright {
background: #000;
border-radius: 50%;
width: 20px;
height: 20px;
top: 30px;
}
.eyeleft {
left: 4px;
}
.eyeright {
right: 4px;
}
.eyeleft:before,
.eyeleft:after,
.eyeright:before,
.eyeright:after {
content: '';
background: #fff;
width: 7px;
height: 7px;
top: 4px;
left: 4px;
border-radius: 50%;
position: absolute;
z-index: 5;
}
.eyeleft:after,
.eyeright:after {
width: 4px;
height: 4px;
top: 10px;
left: 10px;
}
.closedeyeleft,
.closedeyeright {
background: transparent none repeat scroll 0 0;
border-color: #000;
border-radius: 5px;
border-style: solid;
border-width: 4px 4px 0;
height: 4px;
top: 35px;
width: 12px;
}
.closedeyeleft {
left: 3px;
}
.closedeyeright {
right: 3px;
}

最佳答案

感谢您提出一个格式正确且包含大量详细信息的问题!

这是一个提供快速眨眼和随机第二次眨眼的潜在解决方案。

//made blink a named function to improve readability a bit
var blink = function(isSecondBlink) {
//got rid of the ternary expressions since we're always doing
//open eyes -> close eyes -> delay -> open eyes

//close both eyes
eyeleft.className = "closedeyeleft";
eyeright.className = "closedeyeright";

//let's reopen those eyes after a brief delay to make a nice blink animation
//as it happens, humans take ~250ms to blink, so let's use a number close to there
setTimeout(function() {
eyeleft.className = "eyeleft";
eyeright.className = "eyeright";
}, 200);

if (isSecondBlink) { return; } //prevents us from blinking 3+ times

//This provides a 40% chance of blinking twice, adjust as needed
var blinkAgain = Math.random() <= 0.4;

//if we need to blink again, go ahead and do it in 300ms
if (blinkAgain) {
setTimeout(function() { blink(true); }, 300);
}
}

//go ahead and blink every 2 seconds
window.onload = setInterval(blink, 2000);

关于JavaScript 眨眼动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39726908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com