This commit is contained in:
2025-06-07 19:49:27 +02:00
parent 69b45e386f
commit daa0505504
2 changed files with 52 additions and 144 deletions
+1 -58
View File
@@ -1,4 +1,4 @@
/*// 1. Sélection des éléments DOM
// 1. Sélection des éléments DOM
const vinyl = document.getElementById('vinyl');
const audio = document.getElementById('audio');
const progress = document.getElementById('progress');
@@ -147,61 +147,4 @@ audio.addEventListener('ended', () => {
} else {
isPlaying = false;
}
});*/
// 1. Sélection des éléments DOM
const vinyl = document.getElementById('vinyl');
// 2. Variables utiles
let lastPosition = null;
let lastTime = null;
let idleTimeout = null;
// 3. Connexion Socket.io
const socket = io();
socket.on('position', (position) => {
const now = Date.now();
if (lastPosition !== null && lastTime !== null) {
const deltaPos = position - lastPosition;
const deltaTime = (now - lastTime) / 1000;
const speed = deltaPos / deltaTime;
clearTimeout(idleTimeout);
// Seuil de mouvement pour considérer que la balle est immobile
if (Math.abs(speed) < 5) {
// Par exemple : diminuer l'opacité pour montrer l'arrêt
vinyl.style.opacity = 0.5;
return;
}
// Si la balle bouge, on remet l'opacité normale
vinyl.style.opacity = 1;
// Calcul de la rotation visuelle du vinyle en fonction de la position
// Ici on fait simplement tourner le vinyle à vitesse proportionnelle à speed
// Ajuste le facteur multiplicateur selon l'effet désiré
const rotationDeg = (speed * 5) % 360;
// Appliquer la rotation cumulée au vinyle
// Si tu veux que la rotation soit cumulée dans le temps, tu peux stocker et additionner la rotation précédente
// Ici on fait une rotation relative (exemple simple)
vinyl.style.transform = `rotate(${rotationDeg}deg)`;
}
lastPosition = position;
lastTime = now;
// Timeout pour gérer l'inactivité (après 300ms d'arrêt, opacité réduite)
idleTimeout = setTimeout(() => {
vinyl.style.opacity = 0.5;
}, 300);
});
// Optionnel : clique sur le vinyle pour un effet visuel (pas de lecture audio ici)
vinyl.addEventListener('click', () => {
// Par exemple, ajouter une animation ou un effet au clic
console.log('Vinyl clicked');
});