Pregunta

[EDIT: Lo siento por aquellos que ya respondió - en mi estado de privación de sueño, se me olvidó que esta situación particular es una película de YouTube, no el jugador JW FLV. Puedo ver que hay más extensa documentación sobre la interacción con las películas de YouTube, así que voy a seguir, pero ninguna más información también es bienvenida]

Estoy usando vídeos de YouTube insertados en una colección de divs que están siendo girada por el uso el plugin jQuery ciclo ( http://malsup.com/jquery/cycle/ ).

Me gustaría que el ciclo de parar cuando hago clic en una de las películas que inicie la lectura, pero no puedo encontrar la manera de conectar un controlador de eventos jQuery para el jugador objetivo.

Esto es lo que mi código actual se parece (no se puede seleccionar directamente una etiqueta de objeto con jQuery, así que seleccione el div padre y luego el elemento objeto como el primer hijo):

$("div.feature-player").children(":first").click(function(event) {
   $('#features').cycle('stop');
});

Pero eso no hace el truco. No soy un autor de Flash, así que no estoy muy familiarizado con ActionScript, y yo nunca he creado una interacción entre JavaScript y una película flash antes.

¿Fue útil?

Solución

El jugador API de YouTube es bastante sencilla. Sólo tienes que escuchar el caso onStateChange y controlar el plugin ciclo dependiendo del estado:

Esta es una demostración de trabajo: http://jsbin.com/izolo (editable a través de http://jsbin.com/izolo/edit )

Y el código pertinente:

function handlePlayerStateChange (state) {
  switch (state) {
    case 1:
    case 3:
      // Video has begun playing/buffering
      videoContainer.cycle('pause');
      break;
    case 2:
    case 0:
      // Video has been paused/ended
      videoContainer.cycle('resume');
      break;
  }
}

function onYouTubePlayerReady(id){
  var player = $('#' + id)[0];
  if (player.addEventListener) {
    player.addEventListener('onStateChange', 'handlePlayerStateChange');
  }
  else {
    player.attachEvent('onStateChange', 'handlePlayerStateChange');
  }
}

Otros consejos

Las películas Flash son más o menos cajas negras en lo que se refiere Javascript. Si el archivo SWF que está utilizando no fue escrito para interactuar con javascript entonces usted está probablemente fuera de suerte.

Usted sea necesario averiguar qué métodos javascript la película que está utilizando expone (esperemos que tiene la documentación), encontrar otro que ¿Tiene proporcionan la interacción Javascript, o escribir sus propios SWF a manejarlo.

Lo que estamos buscando es el flash ExternalInterface clase, que se utiliza para la comunicación de flash para javascript y desde javascript para flash.

Si va a incrustar el reproductor con swfobject vas a querer usar swfobject.getObjectById para obtener una referencia a la película. Lea la documentación para ver por qué es necesario hacer esto.

También tendrá que establecer {wmode: "transparente"}. Para el jugador en orden para que la burbuja hasta eventos de clic de JavaScript

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top