IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Gestion barre de progression playlist audio


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut Gestion barre de progression playlist audio
    Bonjour,

    je tente de créer un lecteur audio avec playlist mais je suis confronté à un problème avec la gestion de ma barre de progression :

    J'ai un bouton play/pause, trois liens et un événement click sur les liens (quand je clique sur un lien je veux qu'il change de morceau mais surtout que la barre de progression se réactualise).
    Quand je clique sur Play le premier morceau se lance ainsi que la barre de progression.
    Quand je clique par la suite sur un lien le morceau se relance mais la barre de progression elle, reste figée sur le temps de morceau précédent.
    en revanche si sur le lien cliqué je le met en pause puis le relance avec Play la barre de progression s'actualise et se relance.

    Voici le codage version short :

    Html :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <audio class="audioplayer">
    	<source id="prems" src="zic/Joris Delacroix - Feelings (original mix).ogg"></source>
    	<source id="deums" src="zic/Joris Delacroix - Feelings (original mix).mp3"></source>
    </audio>
    <button id="Play">Play/Pause</button>
    <ul id="playlist">
    	<li><a href="#"  data-srcone="zic/Joris Delacroix - Feelings (original mix).ogg" data-altsrc="zic/Joris Delacroix - Feelings (original mix).mp3"> M1</a></li>
    	<li><a href="#"  data-srcone="zic/Joris Delacroix - Feelings (original mix).ogg" data-altsrc="zic/Joris Delacroix - Feelings (original mix).mp3"> M2</a></li>
    	<li><a href="#"  data-srcone="zic/Joris Delacroix - Feelings (original mix).ogg" data-altsrc="zic/Joris Delacroix - Feelings (original mix).mp3"> M3</a></li>
    </ul>
    <div id="progression">
    	<div id="tpsreel"></div>
    </div>

    Le jquery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $(function (){
    	var audio = $(".audioplayer")[0];
    	$("#Play").click( function(){
    		if($(".audioplayer")[0].paused){
    			$(".audioplayer")[0].play();
    		}
    		else{
    			$(".audioplayer")[0].pause();
    		}
    	});
    	$("li>a").on("click", function(){
    		audio.load();
    		audio.play();
    	});
    	$(".audioplayer").on("timeupdate", function(){
    		var tpstotal = $(".audioplayer")[0].duration;
    		var tpsactuel = $(".audioplayer")[0].currentTime;
    		var fraction = tpsactuel / tpstotal
    		var percent = Math.ceil(fraction * 250);
    		$(".audioplayer").nextAll("#progression").children().css({width : percent});
    	});
    });
    Ici on voit que lorsque je clique sur un lien le morceau se relance et pas la barre de progression. Le problème vient de de la methode load(). Elle réinitialise l’élément audio pour me permettre de changer de morceaux (en validant les nouveaux src des balise source) mais elle ne reiniatile pas l’événement "timeupdate" (là ou je penser que le play() qui relance la lecture apres le load() s'en chargé. Je n'ai pas mis tout le codage mais juste une partie afin de montrer le problème lié à load() si besoin du reste demandé.

    Une idée, un axe de reflexion, un conseil ? pour résoudre ce problème. Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Normal qu'il y ait ce genre de problème tu déclares uniquement le premier élément var audio = $(".audioplayer")[0];le "[0]" signifie que tu sélectionne le premier élément qui a la classe "audio"

    il faut donc sélectionner le bon élément au click du lien

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Ok merci de ta réponse alors je suis plutôt une espèce de novice en jquery.

    Je ne comprend pas pourquoi le fait que [0] pose un problème car je n'ai qu'une balise audio donc c'est toujours elle qui est ciblé non ?

  4. #4
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    a ce moment là tu dois avoir une balise audio et plusieurs balise source.

    Essaye de voir ce que te renvois $( '.audio' )[0], $( '.audio' )[1] avec

    console.log( $( '.audio' )[0], $( '.audio' )[1] )je pense toujours qu'il s'agit d'une mauvaise initialisation sur une sélection hasardeuse

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 8
    Par défaut
    Je viens de rentrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    console.log( $( '.audio' )[0], $( '.audio' )[1] )
    dans la console de Firefox et que cela soit avant, après lecture ou clique lien le résultat est : undefined
    undefined undefined

    Voilà...

  6. #6
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    autant pour moi ta classe c'est audioplayer et pas audio

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Indy FTP (idFTP) faire une barre de progress de transfert
    Par Harry dans le forum Web & réseau
    Réponses: 4
    Dernier message: 09/07/2004, 13h15
  2. [VB.NET] Pb avec le bouton Annuler d'1 barre de progression
    Par dada1982 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/06/2004, 09h56
  3. Réponses: 12
    Dernier message: 27/05/2004, 00h13
  4. [DEBUTANT] Barre de progression
    Par pupupu dans le forum MFC
    Réponses: 4
    Dernier message: 18/01/2004, 16h47
  5. [web] Barre de Progression ASCII
    Par Red Bull dans le forum Web
    Réponses: 13
    Dernier message: 05/06/2003, 12h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo