如何在不冻结的情况下创建永久动画

How do create perpetual animation without freezing?

本文关键字:创建 动画 情况下 冻结      更新时间:2023-09-26

我仍然是Javascript的新手。我尝试编写一个程序来使图像始终淡入淡出切换,所以我使用了 while 条件语句(与常量变量结合使用);在运行并冻结我的计算机(然后记住病毒基本上是无限操作)之后,我在这里搜索了一下,意识到我可能确实不应该使用无限循环。

(实际上我想要微光 - 这意味着从不透明度 0.9 到 0.6 到 0.9 等......)所以它与 fadeToggle 不同,但仍然存在相同的问题; 如何让它无限增加?(无需编写恶意代码。

这是我写的,供您参考:

<script>
$(document).ready(function(){
var always10 = 10;
while (always10 == 10) {
    $('.pimg').fadeToggle(2600);
                   }
});
</script>

另外,我在另一个线程上发现while(true)更适合无限循环。所以另一个问题:无限循环有时可以吗?

由于Javascript是异步的,因此没有sleep方法。但相反,一个好主意是使用 setIntervalsetTimeout .

如果没有这些功能,您的循环将尽可能多地获取资源,并且可能导致冻结(取决于您的浏览器)。

只需使用 jQuery 动画(如 .fadeToggle)已经提供的回调:

function fadeToggleForever ($e) {
    $e.fadeToggle({
        duration: 2600,
        // start another fadeToggle when this one completes
        complete: function () { fadeToggleForever($e) }
    });
}
// main code
fadeToggleForever($('.pimg'));

使用完整回调之所以有效,是因为jQuery动画在内部使用setTimeout(或可能setInterval),因此"产生"代码执行,以便浏览器可以继续对用户输入做出反应并更新显示。