春节终于过完了,自己春节似乎过的有点大,过完春节之后,态度一直没有调整好,总有一股过节的情绪,没有完全进入学习和工作的状态来。继续调整当中……

  这两天项目中遇到一个小需求,十分类似于支付宝蚂蚁森林给小树苗浇水的效果,需要有一个浇水的动作,然后小树苗有点长大的感觉。

思来想去,最好的效果应该是用canvas画一下,受制于技术水平的限制,只能退而求其次,选择css3的动画效果(APP项目,css3兼容性问题可以通过前缀webkit解决)。

  最终效果是:草地上有几棵小树苗,在完成某一动作之后,出现一个小水壶对小树苗浇点水,然后小树苗左右晃动几次,稍微变大一点。

  最终实现的是:水壶浇水的动作做成了gif动画图片,在指定事件触发之后,水壶从右上角飞出,做出浇水动作,在浇水动作完成之后,小树苗开始晃动生长,并且水壶消失。

  css3动画部分都属于比较好实现的部分,唯一需要注意的是,也是比较繁杂的是,动作需要逼真一点的话,那就得反复修改动画的细节参数,这里略过。这里我们需要关心的是:水壶浇水的动作完成之后,怎么界定这个动作完成了。

  第一想法是:延时定时器,setTimeout,设定一个与水壶浇水一样时间的延时。但是既然是定时器,就必然存在阻塞的状态,如果出现阻塞,那么很可能两个动画就不会连贯执行。

  那还能怎么办呢?

  其实,css3为animation提供了一组动画事件,即webkitAnimationStart-动画开始,webkitAnimationEnd-动画结束,webkitAnimationIteration-动画重复播放 ,即可以很方便的监听动画过程。

  项目中选择zepto来操作DOM

    $(document.body).on('swing', function(){
$('.bottle').show().addClass('bottle-fadeIn');
$('.bottle').on('webkitAnimationEnd',function(){
$('.bottle').hide();
$('.tree').each(function(){
var index = (Math.random()*3).toFixed(2);
var self = this;
setTimeout(function(){
$(self).addClass('a-swing');
}, 200*index);
});
}); $('.tree').on('webkitAnimationEnd',function(){
$('.tree').css({'-webkit-transform':'scale(1.2,1.2)'});
$('.tree').removeClass('a-swing');
}) ;
});

  在body体上自定义事件swing,以便在需要的时候出发即可。

  class为bottle-fadeIn,是为水壶添加的渐现的动画,然后监听水壶动画结束的时间点,再触发小树苗生长的动画,为了不让多个树苗往同一个方向同一时间晃动,就定义了一个随机数index,对每一棵小树苗延迟添加动画class a-swing,并且监听小树苗动画结束之后,直接将小树苗直接放大1.2倍。

  基本完成小需求了,就我个人而言还存在很多遗憾,效果并不理想。

webkitAnimationEnd动画事件的更多相关文章

  1. android图片透明度跟缩放大小动画事件

    概序 : 动画事件写在xml中,然后用AnimationUtils去加载动画事件,再监听动画结束事件,隐藏imageview. 1. player_double_click_animation.xml ...

  2. CSS3动画事件

    CSS3 的动画效果强大,在移动端使用广泛,动画执行开始和结束都可以使用JS来监听其事件. animationstart animationend 以下是一个示例 <!DOCTYPE html& ...

  3. 关于Animation动画事件的几项测试

    测试版本unity5.3.4 1.当帧率不足时,Animation会跳帧,假如跳帧超过动画事件的帧,动画事件也会执行. 2.当Animation混合时,混合中的动画不管哪个当前有动画事件,都会执行. ...

  4. css3 animation动画事件

    当使用css3时,会遇到利用@keyframes来定义动画事件,利用以下3个事件,能够捕捉当前元素的动画: AnimationEnd //动画结束时 AnimationStart  //动画開始 An ...

  5. [Unity动画]03.动画事件

    1.找到动画,添加动画事件 2.在脚本中添加回调方法 TestAnimator.cs using UnityEngine; public class TestAnimator : MonoBehavi ...

  6. Unity动画事件

    动画事件添加 var clip = new AnimationClip();//clip,动画剪辑  储存基于动画的关键帧.这里新建动画剪辑 clip.SetCurve ("", ...

  7. Unity3D NGUI UIPlayTween(原UIButtonTween)动画事件详解

    http://blog.csdn.net/asd237241291/article/details/8507817 原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 Unity3D引擎技术 ...

  8. DragonBones龙骨骨骼中的自定义事件(另有声音、动画事件)

    参考: DragonBones骨骼动画事件系统详解 一.在DragonBones中添加自定义事件帧 动画制作时 时间轴拉到最下面有一个事件层,添加一个事件帧 左边属性面板定义自定义事件 二.Egret ...

  9. 【VUE】@click加上v-bind绑定切换类名及动画事件

    好长的名字... 效果是 点击元素,通过改变类名的方式让其改变颜色+移动动画效果,这里用的是v-bind和@click 废话不说 show me the code! <div id=" ...

随机推荐

  1. ASP.NET AJAX入门系列(6):UpdateProgress控件简单介绍

    在ASP.NET AJAX Beta2中,UpdateProgress控件已经从“增值”CTP中移到了ASP.NET AJAX核心中.以下两篇关于UpdateProgress的文章基本翻译自ASP.N ...

  2. 利用ST MCU内部基准参考电压监测电源电压及其它

    在使用ST MCU开发过程中,有人问如果电源电压是变动的,询问有无办法用比较简洁的办法对电源电压进行监测,或者说电源电压波动情况下能否检测出其它待测的AD输入电压. 这里跟大家分享交流一个方法.就是在 ...

  3. ML: 聚类算法-K均值聚类

    基于划分方法聚类算法R包: K-均值聚类(K-means)                   stats::kmeans().fpc::kmeansruns() K-中心点聚类(K-Medoids) ...

  4. MHA failover GTID 专题

    https://yq.aliyun.com/articles/238882?spm=5176.8067842.tagmain.18.73PjU3 摘要: MHA failover GTID 专题 这里 ...

  5. mysql日常处理

    http://blog.csdn.net/zengxuewen2045/article/details/52349731 https://github.com/enmotplinux/On-Site- ...

  6. Sql Server Report Service 的部署问题(Reporting Service 2014為什麼不需要IIS就可以運行)

    http://www.cnblogs.com/syfblog/p/4651621.html Sql Server Report Service 的部署问题 近期在研究SSRS部署问题,因为以前也用到过 ...

  7. Java内部类的一些注意事项

    背景:最近在做一个项目,为了保证前台风格的统一,前台选用的是GWT框架.GWT通过回调的方式向后台取得数据,在前台展示,因此很多的赋值操作只能在回调函数中通过set方法来实现.我的目的是从后台读取一个 ...

  8. xftp找不到匹配的outgoing encryption 算法 怎么解决

    alert("找不到匹配的outgoing encryption 算法"); 原因,是ssh登录本地终端缓存了相关的安全确认信息: 远端的ssh服务升级后,其对应的加密算法均作了升 ...

  9. code block自动生成makefile

    安装插件 http://developer.berlios.de/projects/cbmakegen/  然后会在project菜单下面有一个Generate Makefile的选项 点击就行了 如 ...

  10. 峰Redis学习(2)Jedis 入门实例

    参考博客:http://blog.java1234.com/blog/articles/314.html 第一节:使用Jedis 连接Redis 新建maven项目: pom.xml: <pro ...