首页 > 解决方案 > 如何使用 setTimeout 在 n 秒后更改对象的属性

问题描述

在此处输入图像描述https://github.com/sarang997/simulation1 这是我正在进行的模拟。您可以尝试运行 html 文件以使其正常工作。模拟中有圆圈相互碰撞。每当红色圆圈与绿色圆圈碰撞时,它会将绿色圆圈的颜色变为红色。现在我想要的是,一旦圆圈变成红色,我想要一个计时器,它会在 n 秒后将其颜色变为蓝色。我无法做到这一点。

shape.js 文件中有一个部分可以检测到圆圈之间的碰撞,这就是我要更改颜色的地方,而这正是我希望计时器开始的地方。(shapes.js 文件中的第 104 和 110 行)

标签: javascriptcanvas2dsettimeoutsimulation

解决方案


这是我对问题的解决方案,如果您希望圆圈继续更改颜色(此处由 console.log 替换),您也可以循环它。N 在这里等于秒,它乘以 1000,因为 setTimeout 默认使用毫秒。

   function changeColor(seconds) {
        setTimeout(function () {
                console.log('Here the circle would change color.');  
        }, seconds*1e3);
    }
    changeColor(3)
 


推荐阅读