js帧动画

#自定义帧率动画处理方式

 function frameAnimation(opts,cb) {
                this.fps = opts.fps||30;
                this.now = null;
                this.then = Date.now();
                this.interval = 1000/this.fps;
                this.delta = null;

                var self = this;
                this.tick = function () {
                    requestAnimationFrame(self.tick);
                    self.now = Date.now();
                    self.delta = self.now - self.then;
                    if (self.delta > self.interval) {
                        // 这里不能简单then=now,否则还会出现上边简单做法的细微时间差问题。例如fps=10,每帧100ms,而现在每16ms(60fps)执行一次draw。16*7=112>100,需要7次才实际绘制一次。这个情况下,实际10帧需要112*10=1120ms>1000ms才绘制完成。
                        self.then = self.now - (self.delta % self.interval);
                        if(cb)cb()
                    }
                };
                this.tick()
            };
    var aaa = new frameAnimation({fps:10},function () {
                console.log('绘制动画 10fps')
            })        
复制代码
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值