Fix flow surprise : preview reste live, flash masque la transition

- Preview live continue pendant la surprise (overlay par-dessus)
- Capture DSLR lancee pendant la surprise (1s de reaction)
- Flash blanc couvre tout PUIS on masque surprise + preview derriere
- Plus de frame flou visible entre surprise et photo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-09-18 14:46:14 +02:00
parent 812de8ae53
commit bb49c2c82d
2 changed files with 8 additions and 9 deletions

View File

@@ -1146,7 +1146,7 @@
<script src="/js/websocket.js?v=16"></script>
<script src="/js/app.js?v=25"></script>
<script src="/js/camera.js?v=25"></script>
<script src="/js/camera.js?v=26"></script>
<script src="/js/effects.js?v=4"></script>
<script src="/js/gallery.js?v=5"></script>
<script src="/js/share.js?v=10"></script>

View File

@@ -316,26 +316,25 @@ async function lancerCapture() {
const avecPreMessages = (i === 0);
await compteARebours(avecPreMessages);
// Stopper le preview AVANT la surprise (evite un frame flou visible)
arreterPreview();
// Surprise : seulement en photo simple (pas strip/multi)
// La capture DSLR se lance pendant que l'image surprise est affichee
// S'affiche PAR-DESSUS le preview live (pas besoin de le stopper)
const aSurprise = (modeActuel === 'simple') && montrerSurprise();
// Lancer la capture immediatement (le DSLR met ~1-2s a repondre)
// Lancer la capture DSLR pendant que la surprise est visible
const capturePromise = apiPost('/api/capturer').catch(() => null);
// Laisser la surprise visible pendant que le DSLR capture
if (aSurprise) await pause(800);
// Laisser la surprise visible le temps que le DSLR declenche
if (aSurprise) await pause(1000);
// Flash blanc au moment ou le DSLR a eu le temps de declencher
// Flash blanc couvre tout (surprise + preview dessous)
const flash = document.getElementById('flash-blanc');
flash.classList.remove('cache');
flash.style.animation = 'none';
flash.offsetHeight;
flash.style.animation = '';
// Pendant que le flash couvre l'ecran, on nettoie derriere
arreterPreview();
if (aSurprise) { cacherSurprise(); prechargerSurprise(); }
let resultat = await capturePromise;