Fragmentos de la clase de introducción impartida a los alumnos que participan en el PID.
Ir a la página del proyecto
/*
* Descripción del Shared Object:
* so.reproduciendose
* * "false" si no se está reproduciendo nada.
* * matriz con la información del evento resproduciéndose en otro caso: so.data.reproduciendose["fichero"] para acceder a los datos
*
* so.proximo
* * matriz con la información del evento resproduciéndose en otro caso: so.data.proximo["fichero"] para acceder a los datos
*
* so.arrayEventos
* * Matriz con toda la información del XML
* so.data.arrayEventos[0]["fichero"] = 2011012600
* so.data.arrayEventos[0]["fecha"] = 18:00
* so.data.arrayEventos[0]["descripcion"] = Descripcion del programa
* ...
*/
myStream = Stream.get("Stream_VOD");
var arrayEventos = new Array();
var so = SharedObject.get("so", false);
so.setProperty("reproduciendose",false);
myStream.onStatus = function (info) {
if (info.code == "NetStream.Play.Stop"){
so.setProperty("reproduciendose", false);
}
}
application.allowDebug = true;
application.onAppStart = function() {
trace ("Leyendo el fichero XML...");
arrayEventos = leeXML("programa_v2.xml");
espera = setInterval(Realizador, 2000);
}
Realizador = function () {
trace ("Ejecutando el Realizador...")
var proximoEvento = proximoPrograma(arrayEventos);
so.setProperty("proximo", arrayEventos[proximoEvento.idPrograma]);
so.setProperty("arrayEventos", arrayEventos);
clearInterval(espera);
espera = setInterval(Reproduce, proximoEvento.espera, arrayEventos[proximoEvento.idPrograma]);
}
Reproduce = function (programa) {
so.setProperty("reproduciendose", programa);
trace ("Reproduciendo el video: " +programa["fichero"]);
myStream.setBufferTime(1);
myStream.play(programa["fichero"]);
Realizador();
}
/**
* Devuelve un objeto a con dos atributos:
* idPrograma: Indice de la matriz ArrayEventos en el que se encuentra el elemento con la información del próximo programa
* espera: Tiempo en ms hasta el comienzo el programa con índice "programa".
*/
function proximoPrograma(arrayEventos){
}
/*
* Estructura del XML es:
*
*
* 2011012600
* 18:00
* Descripcion del programa
* http://cevug.ugr.es
* Nombre del Evento
* No
*
*
*
* Matriz Generada es:
*
* mat[0]["fichero"] = 2011012600
* mat[0]["fecha"] = 18:00
* mat[0]["descripcion"] = Descripcion del programa
* ...
*
*/
function leeXML(fichero)
{
}
La estructura del programa tiene tres bloques: la Inicialización, donde se lee el XML; el Realizador, que decide cual es el próximo programa a emitir y la Reproducción que se encarga de "pulsar play" y de llamar de nuevo al realizador para que programe el próximo programa./**********************************************************/
/* Inicialización de la Interfaz */
/**********************************************************/
TVoff();
/**********************************************************/
/* Conexión */
/**********************************************************/
var nc:NetConnection = new NetConnection();
var ns:NetStream;
nc.onStatus = function (info) {
if (info.code.indexOf("Success") != -1) {
goGetTheStream();
}
}
ns.onStatus = function (info) {
trace ("Status del stream: "+ info.code);
}
function goGetTheStream() {
ns = new NetStream(nc);
ns.setBufferTime(3);
vid.attachVideo(ns);
ns.play("Stream_VOD");
}
ns.onStatus = function (info) {
trace(info.code);
}
nc.connect("rtmp://fms_server/application/Stream");
/**********************************************************/
/* Shared Object */
/**********************************************************/
/*
* Descripción del Shared Object:
* so.reproduciendose
* * "false" si no se está reproduciendo nada.
* * matriz con la información del evento resproduciéndose en otro caso: so.data.reproduciendose["fichero"] para acceder a los datos
*
* so.proximo
* * matriz con la información del evento resproduciéndose en otro caso: so.data.proximo["fichero"] para acceder a los datos
*
* so.arrayEventos
* * Matriz con toda la información del XML
* so.data.arrayEventos[0]["fichero"] = 2011012600
* so.data.arrayEventos[0]["fecha"] = 18:00
* so.data.arrayEventos[0]["descripcion"] = Descripcion del programa
* ...
*/
var so:SharedObject;
so = SharedObject.getRemote("so", nc.uri, false);
so.connect(nc);
so.onSync = function (info){
/**/
// Muestra algunos datos del SO cuando se actualiza.
trace ("***Sincronizando. SO registró un evento: " + info[0].code);
// Imprime algunas propiedades del SharedObject
trace ("*Imprimiendo proximo");
for (var prop in so.data.proximo){
trace (prop + " = " + so.data.proximo[prop]);
}
trace ("*Imprimiendo arrayEventos");
for (var programa in so.data.arrayEventos){
for (var prop in so.data.arrayEventos[programa]){
trace (prop + " = " + so.data.arrayEventos[programa][prop]);
}
}
// Controla el modo del reproductor en función de la existencia de un stream reproduciéndose.
if (so.data.reproduciendose==false){
proxEventoNombre.text = so.data.proximo["nombre"];
proxEventoHora.text = "Próximo programa a las " + so.data.proximo["fecha"].toString();
proxEventoDescrip.text = so.data.proximo["descripcion"];
TVoff();
}else{
infoActual.text = so.data.reproduciendose["nombre"] + ": " + so.data.reproduciendose["descripcion"];
TVon();
}
}
/**********************************************************/
/* Funciones de Interfaz */
/**********************************************************/
/*
* Configura la interfaz en modo de emisión inactiva: Oculta controles de pantalla, muestra información.
*/
function TVoff(){
trace ("Ocultando player");
proxEventoNombre._visible = true;
proxEventoHora._visible = true;
proxEventoDescrip._visible = true;
infoActual._visible = false;
vid.enabled = false;
btn_fullScreen._visible = false;
bannerCEVUG._visible = true;
fondo._visible = true;
}
/*
* Configura la interfaz en modo de emisión activa: Oculta información, muestra player y controles de pantalla.
*/
function TVon(){
trace ("Mostrando player");
vid.enabled = true;
proxEventoNombre._visible = false;
proxEventoHora._visible = false;
proxEventoDescrip._visible = false;
infoActual._visible = true;
btn_fullScreen._visible = true;
bannerCEVUG._visible = false;
fondo._visible = false;
}
btn_fullScreen.onRelease = function() {
Stage.displayState = Stage.displayState == "normal" ? "fullScreen" : "normal";
};