Parcourir la source

[ts][pixi-v7][pixi-v8] Add removeSlotObjects to remove all slot objects. Closes #2696.

Davide Tantillo il y a 7 mois
Parent
commit
c6ffb37250
2 fichiers modifiés avec 20 ajouts et 0 suppressions
  1. 10 0
      spine-ts/spine-pixi-v7/src/Spine.ts
  2. 10 0
      spine-ts/spine-pixi-v8/src/Spine.ts

+ 10 - 0
spine-ts/spine-pixi-v7/src/Spine.ts

@@ -402,6 +402,16 @@ export class Spine extends Container {
 		this.slotsObject.delete(slot);
 	}
 
+	/**
+	 * Removes all PixiJS containers attached to any slot.
+	 */
+	public removeSlotObjects () {
+		for (const [, slotObject] of this.slotsObject) {
+			slotObject.container.removeFromParent();
+		}
+		this.slotsObject.clear();
+	}
+
 	private verticesCache: NumberArrayLike = Utils.newFloatArray(1024);
 	private clippingSlotToPixiMasks: Record<string, Graphics> = {};
 	private pixiMaskCleanup (slot: Slot) {

+ 10 - 0
spine-ts/spine-pixi-v8/src/Spine.ts

@@ -775,6 +775,16 @@ export class Spine extends ViewContainer {
 		}
 	}
 
+	/**
+	 * Removes all PixiJS containers attached to any slot.
+	 */
+	public removeSlotObjects () {
+		Object.entries(this._slotsObject).forEach(([slotName, slotObject]) => {
+			if (slotObject) slotObject.container.removeFromParent();
+			delete this._slotsObject[slotName];
+		});
+	}
+
 	/**
 	 * Returns a container attached to a slot, or undefined if no container is attached.
 	 *