rewind
This commit is contained in:
@@ -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');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user