diff --git a/src/engine/Engine.ts b/src/engine/Engine.ts index c6b6776ae..baeb7f281 100644 --- a/src/engine/Engine.ts +++ b/src/engine/Engine.ts @@ -1043,11 +1043,17 @@ O|===|* >________________>\n\ } private _disposed = false; + /** + * Attempts to completely clean up excalibur resources, including removing the canvas from the dom. + * + * To start again you will need to new up an Engine. + */ public dispose() { if (!this._disposed) { this._disposed = true; this.stop(); this.input.toggleEnabled(false); + this.canvas.parentNode.removeChild(this.canvas); this.canvas = null; this.screen.dispose(); this.graphicsContext.dispose(); diff --git a/src/engine/Screen.ts b/src/engine/Screen.ts index 9383c6f07..e32be8aa2 100644 --- a/src/engine/Screen.ts +++ b/src/engine/Screen.ts @@ -313,7 +313,9 @@ export class Screen { if (!this._isDisposed) { // Clean up handlers this._isDisposed = true; + this.events.clear(); this._browser.window.off('resize', this._resizeHandler); + this._browser.window.clear(); if (this._resizeObserver) { this._resizeObserver.disconnect(); }