基于jQuery的HTML逐帧播放器

google.cn的导航大家一定不会陌生。在这个Web逐帧动画被flash统治的时代,基于HTML和JS的逐帧动画总是能让人感觉眼前一亮。存在即合理,与flash相比,HTML逐帧动画有着一些不可替代的优势,比如更好的可访问性、对搜索引擎更加友好等等,但是较高的技术门槛往往让众多开发人员望而却步。由于公司新网站的“龙门阵”模块需要用到HTML的逐帧动画,我用jQuery写了一个简易逐帧播放器,这里共享出来,希望对童鞋们有所帮助。猛击这里Demo

基本原理

HTML逐帧动画的基本原理跟老式的动画片一样,就是把画好的图片一张一张逐个显示出来:

播放的图片

具体到技术上,就是把所有的帧横向排列到一张图片上作为舞台(stage)div的背景图,控制舞台的高(height)、宽(width)和背景图位置(background-position),使舞台同一时间只能显示一帧的图像,然后每隔一段时间(由帧速决定)改变一次舞台的背景图位置,让下一帧显示出来,达到“播放”的效果。

API接口

有童鞋肯定会问,为什么不用gif图片来播放逐帧动画呢?原因就是gif动画无法用程序来控制,没有API接口。

Options

  • img ( String, required ): 被播放图片的路径。
  • width ( Number, required ): 每一帧的宽度。
  • height ( Number, required ): 每一帧的高度。
  • framenum ( Number, required ): 总共有多少帧。
  • framerate ( Number, optional ): 播放的帧速,默认为25。
  • currentFrame ( Number, optional ): 当前处于第几帧,即从第几帧开始播放,默认为1。
  • autoPlay ( Boolen, optional ): 是否在初始化之后自动播放,默认为true。
  • reverse ( Boolen, optional ): 是否按倒序播放,默认为false。
  • vPosition ( String, optional ): 舞台竖直方向的背景图位置,默认为”0px”。

Methods

  • .frameplayer( “play” ): 开始播放。
  • .frameplayer( “pause” ): 暂停播放。
  • .frameplayer( “stop” ): 停止播放,回到第一帧(倒序播放时跳到最后一帧)。
  • .frameplayer( “options”, newOptions ): 修改选项参数,可修改的参数见”Options“。

Events

  • .bind( “play”, function ): 开始播放时触发。
  • .bind( “pause”, function ): 暂停播放时触发。
  • .bind( “play”, function ): 停止播放时触发。
  • .bind( “complete”, function ): 播放完毕时触发。

Tags: , , ,

5 comments

  1. 72色 说:

    demo 在哪里 没看到呀
    能放出代码吗?谢谢

  2. 骨龄 说:

    之前demo挂的域名被和谐了,现在能正常访问了。

  3. Lingeomor 说:

    Demo 又一次死掉了

  4. danny 说:

    能不能将DEMO共享一下

  5. danny 说:

    我的邮箱dannyxu100@139.com

Leave a comment