Tengo una clase en mi proyecto llamada Floor . Teóricamente, la clase está definida y puedo crear con éxito una instancia de ella. Sin embargo, 48 líneas después, tanto la clase como la instancia no están definidas. No hay declaraciones de delete o similares en esas líneas. Puedo reproducir este problema en Firefox, Chromium (Brave) y WebKit (Epiphany).
Código (abreviado):
class Floor extends Entity { constructor(position = 700){ super('floor'); const transform = new Transform2D(0, position); this.attach(transform); this.attach(new class extends Component { canUse(system) { return system instanceof RenderSystem2D; } update(system) { system.ctx.beginPath(); system.ctx.moveTo(transform.x, transform.actY); system.ctx.lineTo(640, transform.actY); system.ctx.strokeStyle = "red"; system.ctx.stroke(); console.log(system.game); for (let entity of system.game?.getWhere(e => e.hasComponent(Transform2D) && !e.hasComponent(Camera2D) && e.getComponent(Transform2D).y > transform.y ) ?? []) { system.game?.remove(entity); } } init(_system) {} }); } } const fl = new Floor; // `fl` has been successfully constructed, and is a `Floor`. // ... // Both `fl` and `Floor` get deleted somewhere in the following two lines: const tilemap = await platinum.image.load('tilemap.png'); const tileBitmap = await createImageBitmap(tilemap, 0, 0, 32, 32); // ... scene.add(fl); // both `fl` and `Floor` are undefined here; why? Una cosa que puede ser de interés es que todas las líneas en la definición de Floor están atenuadas en el depurador; ¿Significa eso que han sido optimizados por la máquina virtual? Si es así, ¿por qué?
Gracias.
platinum es https://github.com/aleksrutins/platinum .