Selaa lähdekoodia

Merge branch '4.0' into 4.1-beta

# Conflicts:
#	spine-ts/package-lock.json
#	spine-ts/package.json
#	spine-ts/spine-canvas/package.json
#	spine-ts/spine-core/package.json
#	spine-ts/spine-player/package.json
#	spine-ts/spine-threejs/package.json
#	spine-ts/spine-webgl/package.json
Mario Zechner 3 vuotta sitten
vanhempi
commit
3c5913827a

+ 6 - 0
spine-ts/spine-player/example/example.html

@@ -22,7 +22,9 @@
 		<button id="walk">Walk</button>
 		<button id="jump">Jump</button>
 		<button id="roar">Roar</button>
+		<button id="screenshot">Screenshot</button>
 	</div>
+	<img id="screenshot-image" src="" style="width: 400px;">
 </body>
 <script>
 	// Creates a new spine player. The debugRender option enables
@@ -50,6 +52,7 @@
 		premultipliedAlpha: true,
 		backgroundColor: "#00000000",
 		alpha: true,
+		preserveDrawingBuffer: true,
 		defaultMix: 1,
 		controlBones: ["root"],
 		success: (player) => {
@@ -66,6 +69,9 @@
 			document.getElementById("roar").addEventListener("click", event => {
 				jsControlledPlayer.setAnimation("roar", true); // set the jump animation to loop
 			});
+			document.getElementById("screenshot").addEventListener("click", event => {
+				document.getElementById("screenshot-image").src = player.canvas.toDataURL();
+			});
 		}
 	});
 </script>

+ 5 - 1
spine-ts/spine-player/src/Player.ts

@@ -114,6 +114,9 @@ export interface SpinePlayerConfig {
 	   backgroundColor alpha is < ff. Default: false */
 	alpha?: boolean
 
+	/* Optional: Whether to preserve the drawing buffer. This is needed if you want to take a screenshot via canvas.getDataURL(), Default: false */
+	preserveDrawingBuffer: boolean
+
 	/* Optional: The canvas background color, given in the format #rrggbb or #rrggbbaa. Default: #000000ff (black) or when
 	   alpha is true #00000000 (transparent) */
 	backgroundColor?: string
@@ -283,6 +286,7 @@ export class SpinePlayer implements Disposable {
 		if (!config.fullScreenBackgroundColor) config.fullScreenBackgroundColor = config.backgroundColor;
 		if (config.backgroundImage && !config.backgroundImage.url) config.backgroundImage = undefined;
 		if (config.premultipliedAlpha === void 0) config.premultipliedAlpha = true;
+		if (config.preserveDrawingBuffer === void 0) config.preserveDrawingBuffer = false;
 		if (config.mipmaps === void 0) config.mipmaps = true;
 		if (!config.debug) config.debug = {
 			bones: false,
@@ -319,7 +323,7 @@ export class SpinePlayer implements Disposable {
 		try {
 			// Setup the OpenGL context.
 			this.canvas = findWithClass(dom, "spine-player-canvas") as HTMLCanvasElement;
-			this.context = new ManagedWebGLRenderingContext(this.canvas, { alpha: config.alpha });
+			this.context = new ManagedWebGLRenderingContext(this.canvas, { alpha: config.alpha, preserveDrawingBuffer: config.preserveDrawingBuffer });
 
 			// Setup the scene renderer and loading screen.
 			this.sceneRenderer = new SceneRenderer(this.canvas, this.context, true);