博客设置中 html,html5 canvas中设置requestAnimationFrame帧速的方法

HTML5 canvas中用于实现动画效果,往往需要用到js中SetInterval与setTimeout,这种定时脚本往往会占用额外的CPU资源。HTML5给我们提供了requestAnimationFrame的方法用于代替它们,但这个requestAnimationFrame却没有提供控制帧速的方法,它的速度可以超过60FPS,但也可能会因为电脑配置或浏览器不同的原因而不同。对于网络游戏这种对画面同步要求比较高的时候,可能是往往不够理想的。而我们的设计HTML5游戏时也可能不需要60FPS处理速度,下面的脚本使帧速基本控制在30FPS左右,经测试可以基本实现控制帧速,各浏览器的帧速基本相同。var drawcount={time:0,fps:31,nums:1};

function startDraw(){

var t=new Date();

if(drawcount.time!=0){

var fps=Math.floor(1000/(new Date().getTime()-drawcount.time.getTime()));

var fps2=drawcount.fps+fps;

var fps3=fps2/drawcount.nums;

if(fps3>31){

window.requestNextAnimationFrame(startDraw);

return;

};

//输出fps3可以查看当前帧速

drawcount.fps=fps2;

drawcount.nums++;

if(drawcount.nums>5000){

drawcount.nums=0;

drawcount.fps=0;

};

};

drawcount.time=t;

/********************/

/*这里添加处理画布的事件*/

/********************/

window.requestNextAnimationFrame(startDraw);

}

注:上面用到的 window.requestNextAnimationFrame,相当于window.setTimeout,详见附件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值