美文网首页
如何用js实现灵活的帧动画

如何用js实现灵活的帧动画

作者: 阿敏91 | 来源:发表于2018-11-07 10:35 被阅读0次

如何用js实现灵活的帧动画 - animation.js

演示地址:http://localhost:8800/pluginAct/index.html?page=animateDemo

我们知道CSS3的属性animate配合动画@keyframes可以实现帧动画,但是它不够灵活,处理麻烦。本文将从两种方式上来实现一个帧动画效果,至于工作中用哪种,交由大家自己取舍。

代码示例

一张100*500的雪碧图box.png

CSS3动画事件

至于animation中的steps这里不再细讲

CSS3实现帧动画及交互

html部分

css部分

#box{

width:100px;height:100px;background-image:url('box.png');

background-repeat: no-repeat;background-size:100%;

animation: mymovesteps(1, start)1s1;

}

@keyframesmymove {

0% {

background-position:00;

}

25% {

background-position:0-100px;

}

50% {

background-position:0-200px;

}

75% {

background-position:0-300px;

}

100% {

background-position:0-400px;

}

}

javascript部分

let$dom =document.getElementById('box');

$dom.addEventListener("webkitAnimationStart",function(){//动画开始事件

},false);

$dom.addEventListener("webkitAnimationIteration",function(){//动画重复播放事件

},false);

$dom.addEventListener("webkitAnimationEnd",function(){//动画结束事件

},false);

animation.js实现帧动画及交互

html部分

css部分

#box{

width:100px;height:100px;

background-repeat: no-repeat;background-size:100%;

}

javascript部分

letanimation =require('../../../../../unit/lib/lib-animate.js/animation');

let$dom =document.getElementById('box');

letimages = ['box.png'];

letmap = ["0 0","0 -100","0 -200","0 -300","0 -400","0 -500"];

run();

functionrun(){

letrepeatAnimation = animation().loadImage(images).

changePosition($dom, map, images[0]);

repeatAnimation.start(80);

}

api

任务的概念:即每执行完一组map算一个任务

api说明

loadImage预加载雪碧图

changePosition根据数组坐标设置dom的背景图片位置

start动画开始执行 80ms/帧

repeat重复上一个任务

repeatForever无限重复上一个任务 等同于infinite

wait设置当前任务结束后下一个任务开始前的等待时间

pause暂停任务

restart继续执行任务

then添加一个同步任务

enterFrame自定义动画每帧执行的任务函数

总结

animation.js的出现为了解决如下问题

可以在动画播放过程中对动画进行控制:开始、暂停、回放、终止、取消

可以进行很精确的事件回调

动画帧比较多的时候,可以很方便的进行雪碧图和位置map分组

相关文章

  • 如何用js实现灵活的帧动画

    如何用js实现灵活的帧动画 - animation.js 演示地址:http://localhost:8800/p...

  • Days18 H5+Css3

    1.使用动画 (js实现动画,css3实现动画) 一个是帧动画 一个是补间动画 什么是帧动画:使用定时器 每隔一段...

  • Android帧动画的实现

    帧动画就是图片的循环播放 实现帧动画有两种方式: 1.通过代码实现: //帧动画对象AnimationDrawab...

  • Android 动画使用详解(一) 帧动画

    动画在Android开发中经常会被用到,好的动画效果可以达到事半功倍的效果,本文主要是帧动画的实现。帧动画主要实现...

  • 浅谈swift动画(二)

    逐帧动画 逐帧动画的实现就是将图片一帧一帧的渲染,然后在短时间内依次展示出来,即可实现动画效果。 基于NSTime...

  • UIImage 加载简易动画效果

    序列帧动画概念和序列帧动画实现 方式1: 方式2:

  • Android 动画锦集

    Android 动画可分为逐帧动画、补间动画、属性动画。使用传统的逐帧动画、补间动画可以实现 Android 基本...

  • HTML5动画

    关键帧动画 实现代码: 关键帧动画 *{ margin: 0; padding: ...

  • 动画播放(UIImageView)

    标签:帧动画、transform帧动画通过有序的多张图片快速的连续播放来实现动画效果 transform属性: 合...

  • 利用SurfaceView实现帧动画效果,更流畅,更节约内存

    利用SurfaceView实现帧动画效果 在开发Android做动画效果的时候,有时候UI给开发一组动画实现的帧图...

网友评论

      本文标题:如何用js实现灵活的帧动画

      本文链接:https://www.haomeiwen.com/subject/ckpjvxtx.html