使图像闪烁的最快方法->如此之快以至于您看不到它

LexaGC

我正在寻找一种使图像闪烁得如此之快以至于我看不到的方法(然后避免一些屏幕截图):

    var img = document.getElementsByTagName('img')[0];
    var i = true;

    setInterval(blink,10);
    
    function blink(){
        if(i){
            img.style.visibility="visible";
            i=false;
        }else{
            img.style.visibility="hidden";
            i=true;
        }
        
    }
    

但是我仍然看到闪烁,并且我认为我不能低于10ms。最初,我以为低于24 f / s不会引起注意,但事实并非如此。

我可以更改哪些内容以使其更快?可能吗?

最终目标是避免屏幕截图。

一定的表现

监视器的标准刷新率为60Hz-每秒60次。这是硬件的局限性-即使具有完美的软件时序,也没有办法比这更频繁地显示帧-并且关注屏幕的人可以很容易地看到1/60秒的画面。

您唯一的选择是使图像在每帧中都出现和消失(这可以比setInterval使用requestAnimationFrame-更为精确地完成-但对于那些近距离观看的人仍然可见)。

// Ensure browser is not busy
setTimeout(() => {
  window.requestAnimationFrame(() => {
    document.body.classList.toggle('blue');
    window.requestAnimationFrame(() => {
      document.body.classList.toggle('blue');
    });
  });
}, 1000);
.blue {
  background-color: blue;
}

监视器不可能在足够短的时间内显示某些东西,而这是无法感知的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章