Comunidad de diseño web y desarrollo en internet online

matriz con videos

Citar            
MensajeEscrito el 07 Mar 2013 07:38 pm
Hola.
Estoy tratando de navegar por una matriz de videos y agregué los botones "proximo" y "anterior" y el problema que "a veces funcionan bien" y a veces no (a veces hay que hacer doble click para que se salte al otro video). Tal vez alguien me pueda orientar si falta algo de código o lo que puse no está bien.
Este es e código.

Código ActionScript :

var videos:Array = new Array("videos/1.mp4", "videos/2.mp4", "videos/3.mp4", "videos/4.mp4", "videos/5.mp4", "videos/6.mp4", "videos/7.mp4");
var currentVideo:Number = 0;
var duration:Number = 0;
var ready:Boolean = true;
var nc:NetConnection = new NetConnection();
nc.connect(null);
ventajas;
var ns:NetStream = new NetStream(nc);
videoPlayer.attachVideo(ns);
ns.play(videos[currentVideo]);
ns.onMetaData = function(evt:Object):Void 
{
   duration = evt.duration;
   ready = true;
};
ns.onStatus = function(evt:Object):Void 
{
   if (ready && this.time > 0 && this.time >= (duration - 0.5))
   {
      ready = false;
      currentVideo++;
      if (currentVideo < videos.length)
      {
         ns.play(videos[currentVideo]);
      }
      else
      {
         delete this.onStatus;
      }
   }
};
/////////////////////////////esto se lo agregué//////////////////////////
btn_proximo.onRelease = function()
{
   ns.play(videos[currentVideo++]);
   trace("proximo");
};
btn_anterior.onRelease = function()
{
   ns.play(videos[currentVideo--]);
   trace("anterior");
};

Por rakatan

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Mar 2013 12:18 pm
Sugerencia: en vez de darle play sobre el play del anterior, considera darle un stop al que se está reproduciendo. Siempre tomará unos segundos detener el que se reproduce, cargar el buffer del siguiente y empezar a reproducirlo, por lo cual te recomiendo deshabilitar el botón siguiente o anterior hasta que la reproducción comience porque la gente ansiosa hará click indefinidamente. Adicionalmente, un cartel de buffering (mientras comienza el otro video) no estaría mal

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Mar 2013 04:19 pm
Jorge, gracias por tu respuesta.
estoy probando tu sugerencia y no cambia mucho, es decir aún es "inestable", a veces funciona a ves no. Me pregunto, por que no se produce este problema cuando los vídeos se llaman secuencialmente desde un archivo XML.

Por rakatan

6 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Mar 2013 04:36 pm
Este callback te da feedback de lo que está pasando

ns.onStatus

El evt que recibe como parámetro tiene un code y un mensaje (revisa la ayuda para ver como se llaman exactamente) que te dicen cual es la actividad del NetStream. Sigue un poco su ciclo y verás todo lo que pasa entre un play y otro, y quizás tenga mas sentido lo que te digo ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Mar 2013 02:36 pm
Estimado Jorge.
:) Agradezco tu orientación, me puse a investigar un código que funcionaba con XML y pude entender tu feedback. Salió a empujones, pero ya tengo lo que buscaba. La solución de Array la encuentro más simple, el XML para mi es más engorroso, espero que en la práctica los resultados sean igual de estables que el XML.

La solución completa por si a alguien le sirve (arriba está en código del Array).

FUNCION STATUS
ns.onStatus = function(info)
{
if (info.code == "NetStream.Play.Stop")
{
currentVideo++;
if (currentVideo >= myVideo.length)
{
currentVideo = 0;
}
ns.play(myVideo[currentVideo]);
}
};
/////////////////////////////////////////////////////////////////////////////////////////////
LOS BOTONES
btn_anterior.onRelease = function()
{
currentVideo--;
if (currentVideo == -1)
{
currentVideo = myVideo.length - 1;
}
ns.play(myVideo[currentVideo]);

};
/////////////////////////////////////////////////////////////////////////////////////////////
btn_proximo.onRelease = function()
{
currentVideo++;
if (currentVideo >= myVideo.length)
{
currentVideo = 0;//
}
ns.play(myVideo[currentVideo]);


};

Rakatan :wink:

Por rakatan

6 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.