问题描述
我正在使用动画 JS 库,我向一个 div 添加了两个动画,第二个动画在第一个动画完成时开始。 但问题是我只想让第二个动画保持循环,我已经在第二个动画上将属性“loop”设置为“true”,但它仍然不会循环,除了“loop”之外的每个属性都可以正常工作属性,我怎样才能一遍又一遍地制作第二个动画循环?
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,duration: 1000,loop: true,})
解决方法
正如评论中提到的,这是库中的 an existing issue。在这个解决方法中,我需要将 anim.restart()
调用放在 setTimeout
中,以确保在新的事件循环中执行 javascript。
let square = document.querySelector("div");
anime.timeline()
.add({
targets: square,backgroundColor: "#3dbf7a",duration: 2000,}).add({
targets: square,translateX: [0,100],translateY: [0,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>