Spine, sp.Skeleton.setCompleteListener, the handler is triggered again when the animation starts in another track
Cocos Creator version
3.5.8
System information
Google Chrome
Issue description
Unexpected behavior when running animations sequentially in different tracks
Relevant error log output
No response
Steps to reproduce
Example code:
const spine = this.getComponent(sp.Skeleton)
let closed = false
spine.setStartListener(e => {
console.log('start', e.animation.name)
})
spine.setCompleteListener(e => {
console.log('complete', e.animation.name)
if (e.animation.name == 'open' && !closed) {
closed = true
spine.setAnimation(1, 'close', false)
}
})
spine.setAnimation(0, 'open', false)
Console output:
start open
complete open
start close
complete open
complete close
complete open repeated
if not use closed flag, call complete open occurs indefinitely.
Minimal reproduction project
No response
@shnyaka Please review and merge this PR. Thanks!
@bofeng-song 你的这个 pr 并不能彻底解决这个问题. 请参考下 我的这个 pr #19041
@shnyaka setCompleteListener listens to the complete event of all animations. If you only want to listen to the complete event of a single animation, please use setTrackCompleteListener.
This issue will be closed later. If you still have any problems, please provide your feedback promptly. Thank you.