diff --git a/spine-ts/spine-pixi-v7/src/Spine.ts b/spine-ts/spine-pixi-v7/src/Spine.ts index 08e317a8c..651f77d95 100644 --- a/spine-ts/spine-pixi-v7/src/Spine.ts +++ b/spine-ts/spine-pixi-v7/src/Spine.ts @@ -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(); } diff --git a/spine-ts/spine-pixi-v8/src/Spine.ts b/spine-ts/spine-pixi-v8/src/Spine.ts index a7084d77f..ae173aa16 100644 --- a/spine-ts/spine-pixi-v8/src/Spine.ts +++ b/spine-ts/spine-pixi-v8/src/Spine.ts @@ -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;