fix(graphics-2d): __clear leaves the destroyed stage reachable

Offen Anfängerfreundlich
#502 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
82/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
typescript
Bereich
backend

Rechercherichtung

Lies modules/graphics-2d/src/graphics-2d.library.ts etwa in den Zeilen 51–56 und vergleiche die Bereinigung mit modules/graphics-3d/src/graphics-3d.library.ts etwa in Zeile 178. Prüfe die bestehenden graphics-2d-Tests zum Verhalten beim Stoppen und beim Zugriff auf die Stage. Fertig ist es, wenn das Stoppen die Referenzen auf Stage und Basisebene löscht, sodass ein späterer Zugriff auf die Stage meldet, dass graphics nicht initialisiert ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug good first issue modules:graphics-2d
Which package is this bug report for?

graphics-2d

Issue description

_stage / _baseLayer are never reset, so after a stop ctx.graphics.stage returns a destroyed stage instead of throwing "not initialized", and late timers or tweens operate on it silently. The Konva.pixelRatio global keeps its last value.

Where:

Evidence:

this._stage?.destroy();
delete (window as unknown as { Konva?: unknown }).Konva;

Suggested fix: Set this._stage = this._baseLayer = undefined after destroy(), as graphics-3d does.

Related to #356, which added the Konva destruction this follows up on.

Found during a code audit of main at be72076.

Code sample

No response

Versions
  • Engine main at be72076
  • pnpm 12.0.0, Node.js 26, Bun 1.3.14
Issue priority

Low (slightly annoying)

I have tested this issue on a development release

be72076

Vorherrschende Sprache
TypeScript
Sterne
7
Forks
2
Ø Merge
1 T. 17 Std.
Gemergte PRs (30 T.)
17

Entwicklungsumgebung

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus NanoForge-dev/Engine

Alle Issues in NanoForge-dev/Engine

Ähnliche Issues

Weitere Issues zu TypeScript

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.