javascript - 快速点击会减慢 Android chrome 上的计时器速度

标签 javascript gsap

我有一个迷你游戏,要求用户在给定时间(8 秒)内快速单击按钮。有一个倒计时(以毫秒为单位)。当我尝试使用 Android 触摸屏(我认为使用 Android Table OS6)时,我遇到了计时器在快速点击时变慢的情况。有没有办法避免或提高这种情况的性能?这是倒计时器,我认为可以改进吗?不确定 GSAP 是否有助于取代 setinterval 在这件事上?

function countDownNow(){
        // var initial = 800;
        var initial = 8000;
        var count = initial;
        var counter; //10 will  run it every 100th of a second

        function timer() {

            if (count <= 0) {
                console.log(done)

                clearInterval(counter);
                return;
            }
            count--;
            displayCount(count);
        }

        function displayCount(count) {
            var res = count / 100;
            //document.getElementById("countdown").innerHTML = res.toPrecision(count.toString().length) ;
            ctx.clearRect(0, 0, canvas.width, canvas.height);

            ctx.fillStyle = '#fff';
            ctx.font = '90px "Conv_DIN-Bold"';
            var text_title = "first";
            ctx.fillText(res.toPrecision(count.toString().length), 15, canvas.height / 2 + 35);

        }
        counter = setInterval(timer, 10);


        displayCount(initial);   
}

HTML

<!-- Skeleton html -->
<div id="countdown"></div>



<!-- this clickme button is the button where its being used for user to rapidly click it-->
<div class="clickme"></div>

最佳答案

正如 my answer to your last post 中所述、setIntervals 应该避免,特别是当您必须使用它们来精确计时时,尤其当您已经在使用 GSAP 时。如果您使用的是 GSAP,则没有理由使用它们。

对于像这里这样的功能,它没有理由表现不佳。两个最大的性能影响是 1) 使用一堆 setInterval 和 2) 在函数中包含函数。

当函数内有函数时,每次运行函数时都会创建它们。如果这些外部函数被多次调用,那么您创建内部函数的次数通常会超出您的需要。为了避免这种情况,请将内部函数移到外部函数之外,并在需要时使用参数传递变量。 (在内存管理方面,一个小的改进是将不会改变的变量移到函数之外,但这并不重要)

另一个注意事项是,您创建的间隔都会相互覆盖,但您不会杀死旧的间隔。因此,您应该删除之前创建的任何内容,因为无论如何都看不到它们的输出(因为它被新的输出覆盖)。

总共你会得到这样的结果:demo .

关于javascript - 快速点击会减慢 Android chrome 上的计时器速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59462646/

相关文章:

javascript - GreenSock 动画未按预期工作

javascript - Parallax.js 移动我的 css 定位元素

javascript - 使用绿色 socks 将旋钮拖动到 360 度

javascript - XMLHttpRequest 返回无响应和 XML 错误

javascript - 使用 SetInterval 在 Javascript Canvas 上刷新游戏出现故障/闪烁

javascript - 在 AngularJS 中处理大型数据集

javascript - 如何根据视口(viewport)宽度/高度计算移动背景图像的量

javascript - Pixi.js:这一系列复杂的位置/alpha/比例数字是如何生成的?

Javascript 使用 jQuery 将查询字符串转换为 JSON,然后返回查询字符串

javascript - 单击禁用按钮时制作警报窗口