Lucciole, finestre che si accendono di sera, rondini, cipressi al vento e dissolvenza fra le scene
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ApqNBvNbNCwXqR2RLo8QJh
This commit is contained in:
+9
-1
@@ -538,7 +538,8 @@ function updateUi() {
|
||||
}
|
||||
}
|
||||
|
||||
let last = performance.now(), drawnStill = false;
|
||||
let last = performance.now(), drawnStill = false, fade = 0, fadeScene = null;
|
||||
const FADE = 0.4; // secondi della dissolvenza fra le scene
|
||||
function frame(now) {
|
||||
// Il primo timestamp di requestAnimationFrame può precedere `last`: un dt negativo darebbe alla musica un volume
|
||||
// sotto zero, il browser lancerebbe un errore e il ciclo dei fotogrammi si fermerebbe (gioco congelato).
|
||||
@@ -556,6 +557,13 @@ function frame(now) {
|
||||
if (game && (!still || still !== drawnStill)) {
|
||||
if (running) game.update(dt);
|
||||
render(ctx, game, { hover: debug && hoverTarget ? game.hotspot(hoverTarget) : null, spots: running && now < spotsUntil, debug: debugView() });
|
||||
// Cambiando scena, un attimo di nero che sfuma: la dissolvenza dei vecchi giochi, invece del taglio netto.
|
||||
if (game.state.scene !== fadeScene) { if (fadeScene) fade = 1; fadeScene = game.state.scene; }
|
||||
if (fade > 0) {
|
||||
ctx.fillStyle = `rgba(0, 0, 0, ${fade})`;
|
||||
ctx.fillRect(0, 0, WIDTH, HEIGHT);
|
||||
fade = Math.max(0, fade - dt / FADE);
|
||||
}
|
||||
updateUi();
|
||||
}
|
||||
drawnStill = still;
|
||||
|
||||
Reference in New Issue
Block a user