Skip to content

Spine, sp.Skeleton.setCompleteListener, the handler is triggered again when the animation starts in another track #18525

@shnyaka

Description

@shnyaka

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

Metadata

Metadata

Assignees

Labels

BugNeeds TriageNeeds to be assigned by the team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions