Foros del Web » Creando para Internet » Flash y Actionscript »

Preguntita sobre LoadVars

Estas en el tema de Preguntita sobre LoadVars en el foro de Flash y Actionscript en Foros del Web. Hola a todos! Tengo el siguiente código que me guarda en un array el contenido de un archivo de texto: Código: var lv:LoadVars = new ...
  #1 (permalink)  
Antiguo 20/10/2010, 15:10
Avatar de Damoc  
Fecha de Ingreso: octubre-2010
Mensajes: 26
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta Preguntita sobre LoadVars

Hola a todos!

Tengo el siguiente código que me guarda en un array el contenido de un archivo de texto:

Código:
var lv:LoadVars = new LoadVars();

lv.load("playlist.txt");
lv.onLoad = function(exito:Boolean) {
	if (exito) {
		playlist = this.videos.split(",");
	}
};
La pregunta es: ¿cómo hago para que mi array esté disponible fuera de esa función?
  #2 (permalink)  
Antiguo 20/10/2010, 15:18
Avatar de Diegoazul  
Fecha de Ingreso: mayo-2007
Ubicación: { Dash Berlin }
Mensajes: 1.879
Antigüedad: 17 años, 6 meses
Puntos: 67
Respuesta: Preguntita sobre LoadVars

y donde declaraste el array? no lo veo en el codigo que pones.
__________________
{ Flash }
  #3 (permalink)  
Antiguo 20/10/2010, 15:32
Avatar de Damoc  
Fecha de Ingreso: octubre-2010
Mensajes: 26
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Preguntita sobre LoadVars

Código:
var playlist:Array = new Array();
var lv:LoadVars = new LoadVars();

lv.load("playlist.txt");
lv.onLoad = function(exito:Boolean) {
	if (exito) {
		playlist = this.videos.split(",");
	}
};
Se me escapó la primer línea...

Según entiendo (soy principiante), cuando le asigno el array a playlist, no estoy modificando el array que declaro al principio, sino que estoy creando uno que solo estará disponible dentro de esa función (¿correcto?). Si hago un trace dentro de la función, me muestra el contenido correctamente, si lo hago por fuera, no me muestra nada...

Yo necesito sacar ese array de ahí adentro para que esté disponible en el resto de mi código.

Gracias por la ayuda!
  #4 (permalink)  
Antiguo 20/10/2010, 15:42
Avatar de Diegoazul  
Fecha de Ingreso: mayo-2007
Ubicación: { Dash Berlin }
Mensajes: 1.879
Antigüedad: 17 años, 6 meses
Puntos: 67
Respuesta: Preguntita sobre LoadVars

asi es correcto lo que no sé es por que pones this.video, donde esta la variable video? , supongo que video debe tener este formato:

Cita:
var video:String="dato_uno,datos_dos,dato_tres";
si video esta fuera de la funcion deberia estar asi:


Cita:
playlist = video.split(",");
y no asi:

Cita:
playlist = this.videos.split(",");
__________________
{ Flash }
  #5 (permalink)  
Antiguo 20/10/2010, 15:59
Avatar de Damoc  
Fecha de Ingreso: octubre-2010
Mensajes: 26
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Preguntita sobre LoadVars

La variable video está dentro de mi archivo externo "playlist.txt".

El archivo es algo así como: "video=video1.flv,video2.flv".

El código para leer un archivo de texto externo con flash lo saqué de internet, así que no sé porque va "this" ahí, supongo que hace referencia al LoadVars o algo...

De todas formas, esa parte del código funciona, ya que me mi variable playlist, cuando le hago un trace dentro de la función, me muestra "video1.flv video2.flv".

Lo que no logro hacer es sacar ese array de adentro de la función... ¿Me explico bien?

Necesito que playlist esté disponible por fuera de la función con su contenido "video1.flv video2.flv" para poder usarlo en otra parte.

Hasta donde yo entiendo se usa return para devolver un valor de una función, pero lo del LoadVars me confunde y no veo como aplicar el return en este caso...

Yo quisiera pisar el playlist que declaro al principio con el playlist de adentro de la función, que es el que tiene los valores cargados...

¿Y si playlist fuera una variable global? ¿Funcionaría en ese caso?
  #6 (permalink)  
Antiguo 20/10/2010, 16:05
Avatar de Diegoazul  
Fecha de Ingreso: mayo-2007
Ubicación: { Dash Berlin }
Mensajes: 1.879
Antigüedad: 17 años, 6 meses
Puntos: 67
Respuesta: Preguntita sobre LoadVars

a mi me funciona:
Cita:
var playlist:Array = new Array();
//
var lv:LoadVars = new LoadVars();

lv.load("playlist.txt");
lv.onLoad = function(exito:Boolean)
{
if (exito)
{
playlist = this.video.split(",");

ver();
}
};


//
function ver()
{
trace(playlist[0]);
}
la funcion ver(), muestra el primer video de tu archivo de texto, pruebalo.
__________________
{ Flash }
  #7 (permalink)  
Antiguo 20/10/2010, 16:35
Avatar de Damoc  
Fecha de Ingreso: octubre-2010
Mensajes: 26
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Preguntita sobre LoadVars

Gracias por tus rápidas respuestas!

Sí, en efecto, me muestra el nombre del video, pero la función ver está a su vez dentro de lv.onLoad = function, así que me está mostrando la variable playlist que está dentro de la función...

Si pongo ver(); por fuera, me muestra undefined.

Te dejo el resto de mi código para que se entienda...

Código:
var playlist:Array = new Array();
var lv:LoadVars = new LoadVars();

lv.load("playlist.txt");
lv.onLoad = function(exito:Boolean) {
	if (exito) {
		playlist = this.videos.split(",");
	}
};

var nc:NetConnection = new NetConnection();
nc.connect(null);

var ns:NetStream = new NetStream(nc);
player.attachVideo(ns);

trace(playlist[0]);

ns.play("videos/"+playlist[0]);
Lo de abajo es para reproducir el video que levanto del txt.

El trace(playlist[0]); que hago en la ante última línea me devuelve undefined, porque el array con los nombres de los videos está en la variable playlist de adentro de la función y no en la que yo estoy usando para reproducir el video en la última línea...
  #8 (permalink)  
Antiguo 20/10/2010, 16:41
Avatar de Diegoazul  
Fecha de Ingreso: mayo-2007
Ubicación: { Dash Berlin }
Mensajes: 1.879
Antigüedad: 17 años, 6 meses
Puntos: 67
Respuesta: Preguntita sobre LoadVars

Esta indefinido, porque antes de cargar el archivo de texto se ejecuta primero

trace(playlist[0]);

y en esas miliesimas de segundo el archivo .txt aun no esta cargado, entonces sino esta cargado el array esta vacio y por eso muestra indefinido, primero debes checar que el array esta cargado y despues haces los traces que quieras, si tu ejemplo esta correcto deberia funcionar asi:
Cita:
var playlist:Array = new Array();
var lv:LoadVars = new LoadVars();


var nc:NetConnection = new NetConnection();
nc.connect(null);

var ns:NetStream = new NetStream(nc);
player.attachVideo(ns);



lv.load("playlist.txt");
lv.onLoad = function(exito:Boolean) {
if (exito) {
playlist = this.videos.split(",");


ns.play("videos/"+playlist[0]);
}
};

__________________
{ Flash }
  #9 (permalink)  
Antiguo 20/10/2010, 17:15
Avatar de Damoc  
Fecha de Ingreso: octubre-2010
Mensajes: 26
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Preguntita sobre LoadVars

Funcionó perfectamente!

Jamás me hubiera imaginado que era por eso... voy a tenerlo en cuenta de ahora en adelante...!

Lástima que no puse el código completo al principio...

Me fuiste de mucha ayuda, te lo agradezco!
  #10 (permalink)  
Antiguo 20/10/2010, 17:50
Avatar de Diegoazul  
Fecha de Ingreso: mayo-2007
Ubicación: { Dash Berlin }
Mensajes: 1.879
Antigüedad: 17 años, 6 meses
Puntos: 67
Respuesta: Preguntita sobre LoadVars

De nada.
__________________
{ Flash }

Etiquetas: loadvars
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:37.