javascript - 如何首先给 Anime.js 元素一个打开动画,然后是一个循环动画?
问题描述
我正在尝试使用 Anime.js 为对象设置动画。它有一个播放一次的开始动画(旋转),之后它应该有一个不同的旋转动画,无限循环。我将这两个动画都放在时间轴中,但它不会循环第二个动画。
Javascript:
var tl = anime.timeline({
easing: 'easeOutExpo',
targets: '.fles',
});
tl
.add({
rotate: 20,
duration: 750,
loop: false,
})
.add({
duration: 6000,
loop: true,
easing: 'easeInOutQuad',
keyframes: [
{rotate: '+=1'},
{rotate: '-=1'},
{rotate: '+=1.5'},
{rotate: '-=2'},
{rotate: '+=1.5'},
],
})
Anime.js 可以做到这一点吗?怎么做?
提前致谢!
解决方案
用时间线是不可能的,时间线只是在你传递loop: true
它的创建时循环。从源代码看来,loop
添加对象中的属性被忽略了。
但是,您可以.finished
在anime
实例上使用 Promise:
anime({/*first animation*/}).finished.then(()=>
anime({/*next animation*/}))
并模仿继承属性:
let base = {
easing: 'easeOutExpo',
targets: '.fles',
}
anime(Object.assign({}, base, {
rotate: 20,
duration: 750,
loop: false,
}))
.finished.then(()=>
anime(Object.assign({}, base, {
duration: 6000,
loop: true,
easing: 'easeInOutQuad',
keyframes: [
{rotate: '+=1'},
{rotate: '-=1'},
{rotate: '+=1.5'},
{rotate: '-=2'},
{rotate: '+=1.5'},
],
})));
推荐阅读
- typescript - 将模型与 sequelize-typescript 相关联
- node.js - 如何在离线时安装存储在我的电脑中的 npm 包
- azure-pipelines - 视觉工作室构建任务路径相对于哪里
- vb.net - UPGRADE_WARNING:在 VB 中初始化表单时可能会触发事件 TextChanged
- python - 在服务器上安装 postgresql 数据库并在另一个 pc 客户端上运行 gui 应用程序
- jdbc - 从 Azure 数据工厂连接到第三方 JDBC 连接器
- javascript - Webpack 更改文件类型并添加类
- ios - 无法使用 Twilio 可编程聊天接收图像/视频消息的推送通知
- html - 使 safari 和 Firefox 中的 CSS 外观相同
- python - 创建一个循环来读取excel文件 - python