2016-10-22 3 views

Répondre

0

J'avais aussi des problèmes avec ça. Mon code ressemblait à ceci. J'appellerais play et j'appellerai immédiatement pour changer l'élément multimédia. J'ai essayé de commander différemment (appelez le jeu après avoir changé l'article) et j'ai remarqué que quand j'ai passé le code, cela fonctionnerait comme prévu. Notez que this.startingVideoId est défini sur le contrôleur par une action avant d'appeler la fonction de lecture qui contient le code ci-dessus. videoItemsList est également défini ci-dessus et a des objets avec les informations vidéo.

J'ai décidé d'ajouter un écouteur d'événement et d'attendre jusqu'à ce que je reçoive un événement du lecteur avant d'essayer de changer l'élément currentItem. J'ai retiré player.changeToMediaAtIndex(this.currentMediaItemIndex); de la fonction de lecture et l'ai déplacé dans l'écouteur d'événement.

J'ai ajouté l'écouteur d'événement dans la fonction de lecture lorsque le joueur est créé comme tel.

player.addEventListener("stateDidChange", this.stateDidChange); 

Je mis en œuvre l'écouteur d'événement pour vérifier la liste de lecture et voir si elle joue la vidéo à droite quand il entre dans un état de jeu.

private stateDidChange = (event) => { 
     if (event.state == "playing") { 
      var player = <Player>event.target; 
      for (var i = 0; i < player.playlist.length; ++i) { 
       if (player.playlist.item(i) == player.currentMediaItem) { 
        if (i != this.currentMediaItemIndex) { 
         player.changeToMediaAtIndex(this.currentMediaItemIndex); 
        } 
        break; // break out of the loop since we don't care about the rest. 
       } 
      } 
     } 
    }; 

Cela fonctionne très bien maintenant et commence toujours au bon endroit. Vous aurez besoin d'un suivi d'état supplémentaire avec les écouteurs d'événements, comme changer le currentMediaItemIndex quand la piste change, mais cela devrait vous permettre d'être sur la bonne voie, j'espère.

Il n'y a pas encore beaucoup de bonnes réponses tvos ici encore. J'espère que cela aidera.

Bonne programmation.