[ts][pixi-v7][pixi-v8] Clean up ticker correctly.

This commit is contained in:
Davide Tantillo 2026-02-24 11:35:38 +01:00
parent 460072ec1e
commit 14bfef61dd
2 changed files with 4 additions and 0 deletions

View File

@ -325,6 +325,7 @@ export class Spine extends Container {
}
/** Sets the ticker to use when {@link autoUpdate} is `true`. If `autoUpdate` is already `true`, the update callback will be moved from the old ticker to the new one. */
public set ticker (value: Ticker) {
value = value ?? Ticker.shared;
if (this._ticker === value) return;
if (this._autoUpdate) {
@ -453,6 +454,7 @@ export class Spine extends Container {
/** Destroy Spine game object elements, then call the {@link Container.destroy} with the given options */
public override destroy (options?: boolean | IDestroyOptions | undefined): void {
if (this.autoUpdate) this.autoUpdate = false;
(this._ticker as any) = null;
for (const [, mesh] of this.meshesCache) {
mesh?.destroy();
}

View File

@ -380,6 +380,7 @@ export class Spine extends ViewContainer {
}
/** Sets the ticker to use when {@link autoUpdate} is `true`. If `autoUpdate` is already `true`, the update callback will be moved from the old ticker to the new one. */
public set ticker (value: Ticker) {
value = value ?? Ticker.shared;
if (this._ticker === value) return;
if (this._autoUpdate) {
@ -1050,6 +1051,7 @@ export class Spine extends ViewContainer {
super.destroy(options);
this._ticker.remove(this.internalUpdate, this);
(this._ticker as any) = null;
this.state.clearListeners();
this.debug = undefined;
this.skeleton = null as any;