Estoy desarrollando una web que contiene una galeria de videos (los eventos están construidos con Delegate) que muestran los diferentes trabajos de una empresa.
El visor de vídeo está basado en NetStream.
Cuando pulso en un thumbnail de la galería de videos, me reproduce sin problemas el video... Pero lo que no hace es hacerme la precarga, sino que para que se reproduzca el vídeo hay que esperar a que se cargue completamente, cosa que no es válida.
Lo curioso es que si lanzo el stream.play(ruta_video) desde donde tengo la programación, si funciona la barra... pero si lo hago desde cualquier thumbnail de la galería de trabajos, funciona todo menos la barra de carga.
Se me ocurre que puede ser que deba pasar la variable stream como propiedad de Delegate, pero no estoy seguro si es eso.
Aquí pongo mi codigo para que podais decirme que ocurre. Parece algo largo, pero en realidad no tiene mucho...
Muchas, muchas gracias.
mig
Código ActionScript :
_global.creada = "no"; var videoTam:Object = new Object(); _global.cambio = true; /// controla si es pantalla completa o no var pausePlay:Boolean = true; /// Controla si el video esta pausado o en play var pathT:Rutas = new Rutas (); /// inicializa la clase Rutas; //////////////// RUTA PARA LA INFO DE CADA TRABAJO. aqui estan las RUTAS necesarias. var timeline:MovieClip =pathT.rutaContVideoTrab ; //// ruta en la que voy a vincular el contenedor del video var nDownload:Number; /// crea un set interval que controle la gestión de la barra de descarga progresiva var nPlayback:Number; /// crearun set interval que controle la posicion del slider en el movimiento del video // ---------------- NetConnection and NetStream Objects --------------// /// crea la instancia del movie clip donde se muestra el video if (creada == "no") { // comprueba si ya tenemos instancia o no _global.video_container = timeline.attachMovie ('video_container', 'video_container', timeline.getNextHighestDepth ()); creada = "si"; var connection_nc:NetConnection = new NetConnection (); connection_nc.connect (null); var stream:NetStream = new NetStream (connection_nc); stream.setBufferTime(5); video_container.mivideo.my_video.attachVideo (stream); video_container.mivideo.my_video.smoothing = true; //////////// posicionamos la instancia en el escenario en su posición inicial video_container._x = 10; video_container._y = 117; ////// cambiar el tamaño del video dependiendo de la variable _tipodemedia _global._minW = 700; // es el tamaño del vídeo MAXIMO _global._minH = 390; video_container.mivideo.my_video._height = _minH; video_container.mivideo.my_video._width = _minW; } //-----------------------------------onStatus Event Handlers -------------------// stream.onStatus = function(obj:Object):Void { trace(obj.code); if (obj.code == "NetStream.Play.Start") { } if (obj.code == "NetStream.Play.Stop") { clearInterval(nPlayback); video_container.mcBuffer._visible = false; } if (obj.code == "NetStream.Play.StreamNotFound") { trace("movie cannot be found"); } if (obj.code == "NetStream.Buffer.Full") { video_container.mcBuffer._visible = false; } //if (obj.code == "NetStream.Buffer.Empty" && !movieEnded) { if (obj.code == "NetStream.Buffer.Empty") { trace("buffer empty"); video_container.mcBuffer._visible = true; } }; stream["onMetaData"] = function(obj:Object):Void { duration = obj.duration; } //----------------------------------------PLAYBACk PROGRESS ----------------------------------// var percentPlayed:Number; function playback():Void { percentPlayed = stream.time/duration*(620 - video_container.barra_vid.seek_slider._width); video_container.barra_vid.seek_slider._x = percentPlayed; } //----------------------------- Download Progress --------------------// var nBytesLoaded:Number; var nBytesTotal:Number; var percentageLoaded:Number; function downloadProgress(_stream:NetStream):Void { nBytesLoaded = _stream.bytesLoaded; nBytesTotal = _stream.bytesTotal; trace ("DOWNLOAD PROGRESS") percentageLoaded = nBytesLoaded/nBytesTotal*100; _root.xx.text = percentageLoaded; video_container.barra_vid.seek_slider._xscale = percentageLoaded; if (percentageLoaded == 100) { clearInterval(nDownload); } } //-----------------------------clear intervals ---------------------// function clearIntervals():Void { clearInterval(nDownload); clearInterval(nPlayback); } ////-----------------------BARRA DE DESPLAZAMIENTO ---------------------------------//// video_container.barra_vid.seek_slider.onPress = function():Void { clearInterval(nPlayback); this.startDrag(true, 0, this._y, (620 - video_container.barra_vid.seek_slider._width), this._y); this.onEnterFrame = function():Void { stream.seek(this._x*duration/620); }; }; video_container.barra_vid.seek_slider.onRelease = function():Void { this.stopDrag(); delete this.onEnterFrame; nPlayback = setInterval(playback, 1000/24); }; video_container.barra_vid.seek_slider.onReleaseOutside = video_container.barra_vid.seek_slider.onRelease; ////// lanzarVideo ("PIA.flv", stream); /* ----------------- acciones para el video ------------------------- */ ///////// funcion par LANZXAR EL VIDEO CORRESPONDIENTE function lanzarVideo (ruta_video:String, _stream:NetStream):Void { video_container._visible = true; var ruta_video = "img/gr/"+ruta_video; // seleccionamos el video que se va a visionar _stream.play (ruta_video); clearIntervals(); nDownload = setInterval(downloadProgress, 1000/24,_stream); nPlayback = setInterval(playback, 1000/24); } // elimina el vídeo si lo hay quitarVideo = function ():Void { if (stream != undefined) { stream.close(); clearIntervals(); creada = "no"; // switch para crear instancia de vídeo video_container._visible = false; } } /// esta función la uso cuando sube y baja la galeria pausarVideo = function (valor:Boolean):Void { if (stream != undefined) { stream.pause(not valor); /// pausamos el video video_container._visible = valor; trace ("pausar conexion"); } }