利用requestAnimationFrame实现智能动画

利用requestAnimationFrame实现智能动画

什么是requestAnimationFrame?

在过去,为了使用JavaScript脚本代码实现动画,你需要使用一个定时器来指定每隔一段时间使页面显示效果产生一些变化。最近,浏览器厂商决定提供一些API来优化动画的实现方法。于是,在HTML 5新增window.requestAnimFrame方法,用于以一种更好的性能来实现动画。

为什么需要使用requestAnimationFrame?

通过window.requestAnimFrame方法的利用,浏览器可以具有将各种并发性动画结合入一个单一的页面进行创建及渲染的能力,这种能力将使得动画的实现具有更好的性能。例如,可以同时执行使用JavaScript脚本代码实现的动画与使用CSS中的transition样式属性实现的动画。另外,通过window.requestAnimFrame方法的使用,当用户将浏览器标签窗口切换到其他标签窗口时,当前页面中的动画将被暂停运行,以减少CPU、GPU与内存的消耗。

如何使用requestAnimationFrame?

window.requestAnimFrame方法的使用方法如下所示:

window.requestAnimFrame = (function(){
    return  window.requestAnimationFrame       ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame    ||
            window.oRequestAnimationFrame      ||
            window.msRequestAnimationFrame     ||
            function( callback ){
                window.setTimeout(callback, 1000 / 60);//定义每秒执行60次动画
            };
})();
//相当于使用setInterval(render, 16)方法,但是具有更高的性能
(function animloop(){
    requestAnimFrame(animloop);
    render();
})();
时间: 2024-09-20 07:14:59

利用requestAnimationFrame实现智能动画的相关文章

我的Android进阶之旅------>Android利用温度传感器实现带动画效果的电子温度计

     要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight属性的合理运用,关于android:layout_weight属性的讲解,可以参考:<我的Android进阶之旅------>关于android:layout_weight属性的一个面试题> 地址为:http://blog.csdn.net/ouyang_peng/article/

使用requestAnimationFrame实现js动画性能好_javascript技巧

使用requestAnimationFrame实现js动画性能好.先给大家简单介绍下requestAnimationFrame比起setTimeout.setInterval有哪些优势? 示例一: requestAnimationFrame 比起 setTimeout.setInterval的优势主要有两点:1.requestAnimationFrame 会把每一帧中的所有DOM操作集中起来,在一次重绘或回流中就完成,并且重绘或回流的时间间隔紧紧跟随浏览器的刷新频率,一般来说,这个频率为每秒60

利用SDK实现智能五子棋

网上有很多的实现五子棋的算法,如利用规则法,递归法,博弈树法来实现五子棋的,上次我写了一篇利用SDK实现迷宫算法的文章--"老调重提,利用 SDK 实现迷宫算法",这次还是同样的题目,老调重提,我利用的是规则法来实现五子棋的智能.不过我个人认为还是博弈树法还是简洁.如果读者对博弈树有兴趣的,可以重读数据结构中的树结构的实现这一部分! 这是利用SDK实现的五子棋程序运行界面: 这里我讲出我实现的思路: 第一步,计算出一个棋盘的五子棋的所有胜利组合. 第二步,计算出玩家的下棋状态,电脑将会

利用正高Dolphin智能广告监测系统做好违法广告监测

随着社会经济文化事业的快速发展,广告媒体日益丰富,广告样式花样繁多.新型广告层出不穷,广告监管工作量大面广.难度加大,仅靠工商食药监部门人力监测难以面面俱到.实现有效监管. <新广告法>对原有广告法的修订幅度非常大,原有的广告法内容49条里面只保留了8条,其他要么修改要么增删,且从2015年9月1日开始实施,这对工商食品药品监督管理部门提出了新的要求.工商食药监在广告监管工作中目前面临的主要问题有: 首先监测设备不足,无法实现全天候实时监测,特别是缺乏对网络.广播电台.楼宇电视等广告的监测设备

【Hadoop Summit Tokyo 2016】利用电力公司智能电表数据比较Spark SQL与Hive

本讲义出自Yusuke Furuyama与Yang Xie在Hadoop Summit Tokyo 2016上的演讲,主要分享了对于电力公司智能电表数据的数据分析案例,并分享了利用MapReduce与Spark 1.6进行计算的性能比较情况,并对于Spark 2.0的进化情况进行了分享.

利用JAVASCRIPT制作简单动画

javascript 如果你需要改变动画播放速度, 比如每5秒换一张图片 改变setTimeout("imgturn('" +numb+ "')", 1000)中的1000为5000 <html> <head> <title></title> <script language="javascript"> <!-- file://请先准备几张JPG图片格式的,名字是demo1.jpg

利用&amp;#106avascript制作简单动画

如果你需要改变动画播放速度, 比如每5秒换一张图片 改变setTimeout("imgturn('" +numb+ "')", 1000)中的1000为5000 <html> <head> <title></title> <script language="javascript"> <!-- //请先准备几张JPG图片格式的,名字是demo1.jpg,demo2.jpg,demo3

利用Photoshop制作GIF动画图片教程

最终效果   1.新建个250*200的画布.填充灰色做背景,用椭圆工具画个#bacce5的正圆.     2.添加图层样式.     3.现在看起来像个椭圆的饼饼. 4.画个颜色是#00387d的蓝色圆圆,要比刚刚的那个饼小一圈. 5.继续图层样式.           6.把刚刚的那个蓝圆圆复制一层,然后清除掉图层样式,其实我们只是想要一个和蓝圆圆一样大的另一个圆而已.把清除了图层样式的那个圆的填充设置为0. 7.图层样式,现在看起来是这样. 8.现在画个这个形状像上面白色的东东. 9.把那

asp.net中wpf 利用GifBitmapDecoder解析GIF动画文件

感谢WPF的强大封装,这一切竟然3段代码就完成了. 比如我们常见到的那个兔子揉脸的GIF:   程序运行结果:     代码则是使用BitmapDecoder类型,针对GIF动画,则需要初始化它的子类GifBitmapDecoder.而BitmapDecoder得Frames属性则包含一系列的BitmapFrame.这个类型是BitmapDecoder(和BitmapEncoder)中用到的图像帧,继承自BitmapSource,因此本质上也是一种位图类型.   XAML:     <ListB