javascript - 为什么循环属性不适用于我的第二个动画?
问题描述
我正在使用动画 JS 库,我向 div 添加了两个动画,第二个动画在第一个动画完成时开始。但问题是我只想让第二个动画继续循环,我在第二个动画上将属性“循环”设置为“真”,但它仍然不会循环,除了“循环”之外,每个属性都可以正常工作属性,我怎样才能一遍又一遍地制作第二个动画循环?
HTML 代码:
<body>
<div></div>
</body>
CSS 代码:
div{
height: 100px;
width: 100px;
background-color: rgb(161, 6, 6);
}
JavaScript 代码:
"use strict";
let square = document.querySelector("div")
anime.timeline()
.add({
targets: square,
backgroundColor: "#3dbf7a",
duration: 2000,
})
.add({
targets: square,
translateX: [0,100],
translateY: [0,100],
duration: 1000,
loop: true,
})
解决方案
正如评论中提到的,这是图书馆中的一个现有问题。在这个解决方法中,我需要将anim.restart()
调用放在 asetTimeout
中,以确保 javascript 在新的事件循环中执行。
let square = document.querySelector("div");
anime.timeline()
.add({
targets: square,
backgroundColor: "#3dbf7a",
duration: 2000,
}).add({
targets: square,
translateX: [0, 100],
translateY: [0, 100],
duration: 1000,
changeComplete: (anim) => {
setTimeout(() => {
anim.restart()
})
}
});
div {
height: 100px;
width: 100px;
background-color: rgb(161, 6, 6);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js"></script>
<div></div>
推荐阅读
- sql-server - 一个表,2 列 - 2 个表
- jquery - vue mapbox 打印地图
- android - Android Studio:未出现 Google 登录按钮
- node.js - 运行 .env 文件并从 Node 访问它们
- c# - docker容器中的线程池饥饿
- reactjs - 用于 Auth Token 刷新的 Axios 拦截器返回错误,其中 error.response 未定义
- machine-learning - xgboost 错误:setinfo.xgb.DMatrix(dmat, names(p), p[[1]]) 中的错误:标签的长度必须等于输入数据中的行数
- c# - 将 OAuth2 身份验证添加到现有的 ASP.NET MVC 5 应用程序
- c# - .Net Core 从 MongoDb 的列表中查询不区分大小写的字符串数据
- ascii - 将点转换为 ascii:Graph::Easy::Parser::Graphviz 无法识别嵌套子图?