20

对于 HTML5 游戏,带有适用于移动设备的画布动画。

我面临一些性能问题,这些问题使每个设备与其他设备之间的速度不同。

requestAnimationFrame根据设备速度加快游戏动画的速度。
setInterval让我震惊的是,从一个设备到另一个设备存在延迟。
setTimeout也会减慢画布上的绘图速度。

谁有过移动 HTML5 游戏的经验,可以指导我抛出其中三个(或其他技术,如果可用)的最佳方法,以便在画布上开发动画在不同的移动设备上保持稳定?

4

3 回答 3

21

尽可能使用requestAnimationFrame,因为这就是它的目的。如果没有,最好使用 shim 作为支撑,因此您无需处理具体细节。

为了使动画或游戏逻辑在使用实际方法的情况下以相同的速度执行,您应该使用基于时间的动画和基于时间的物理计算等。

于 2012-12-18T14:49:54.513 回答
11
window.requestAnimFrame = function(){
    return (
        window.requestAnimationFrame       || 
        window.webkitRequestAnimationFrame || 
        window.mozRequestAnimationFrame    || 
        window.oRequestAnimationFrame      || 
        window.msRequestAnimationFrame     || 
        function(/* function */ draw1){
            window.setTimeout(draw1, 1000 / 60);
        }
    );
}();
   window.requestAnimFrame(draw);
})();

在所有情况下使用此功能

于 2014-01-29T01:09:50.407 回答
0

优化 requestAnimationFrame() 因为它的引入对 CPU 非常友好,如果当前窗口或选项卡不可见,则会导致动画停止。

https://flaviocopes.com/requestanimationframe/

 var count = 0;
    const IDS = requestAnimationFrame(repeatOften);

        function repeatOften() {
            count++;
            if(count > 4 ){
                // cancelAnimationFrame (IDS);
                 console.warn('finish');
                 return;
            }
            console.log('init' + count);
            // Do whatever
            requestAnimationFrame(repeatOften);
        }
于 2019-02-12T08:56:48.777 回答