Comunidad de diseño web y desarrollo en internet online

problema con funciones

Citar            
MensajeEscrito el 12 May 2006 10:37 am
Hola a tod@s!!!!

Soy nuevo en esto de ActionScript y tengo un problema.

Tengo una función en la que recojo datos de un XML. Esos datos los voy metiendo en unas variables. Hasta ahí todo bien pero resulta que esas variables no las puedo usar fuera de la función porque siempre me pone undefined. :?

Alguien me puede ayudar?? Se lo agradeceria mucho.

Muchas gracias por adelantado a tod@s!! :D

Por portavoz

23 de clabLevel



Genero:Masculino  

Galicia

msie
Citar            
MensajeEscrito el 12 May 2006 10:44 am
Define las variables en donde cargas los datos previamente fuera de la función o
Si las defines en la función pon el path del objeto donde quieres que se almacenen o
Usa el path de la función (objeto) para llamarlas si las definiste dentro de la función.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 12 May 2006 10:58 am
Gracias por contestar tan rápido pero me pierdo!!! :oops:
Voy a molestar otro poco, a ver si me podeis seguir ayudando.

Esto es lo que tengo en el .as y en el XML y el error que me da es

null url sent to VideoPlayer.load

y es porque la variable está undefined

Código :

//archivo .as
import mx.video.*
generror_xml= new XML();
generror_xml.direccion ="";
generror_xml.ignoreWhite = true;
generror_xml.onLoad = function(success) {
   this[direccion] = generror_xml.firstChild.attributes.direccion;
   success = true ? trace(this[direccion]):null;
};
generror_xml.load("generror.xml");
this.attachMovie("FLVPlayback", my_vp, 10);
my_vp.contentPath=this.direccion;

//archivo XML
<etiqueta direccion="D:/arbol.flv">  </etiqueta>





Gracias!! :D

Por portavoz

23 de clabLevel



Genero:Masculino  

Galicia

msie
Citar            
MensajeEscrito el 12 May 2006 11:33 am
Buenas. Te faltan unas comillas en el parrafo:

this.attachMovie("FLVPlayback", my_vp, 10);

sustituyelo por:

this.attachMovie("FLVPlayback", "my_vp", 10,{contentPath:this.direccion});

el nombre de la instancia creada tambien va entre comillas,además puedes inicializar propiedades del objeto al crearlo metiéndolas entre llaves( {contentPath:this.direccion, _x:100, _y:20} x ejemplo).
Luego puedes hacer:

trace(my_vp);

para ver si realmente se ha creado la instancia;

otra forma de hacerlo podria ser:

my_vp = attachMovie("FLVPlayback","loquesea",10);
trace(my_vp);

esta forma se utiza por si tienes que añadir varios movieClips con un bucle for por ejemplo, y quisieras modificarles algo posteriormente:

var array:Array;
for (i=0;i<max;i++)
{
array[i]= this.attachMovie("FLVPlayback","mc"+i,i+10);
}
...
// y luego quisieras mas adelante modificar alguno de ellos, x ej:
array[5]._x = 100;

Espero que te haya sido de ayuda

Por adriesp

113 de clabLevel

1 tutorial

Genero:Masculino  

Salamanca

opera
Citar            
MensajeEscrito el 12 May 2006 11:51 am
Uy!! si, me faltaban las comillas. Estaba haciendo pruebas y se me olvidó ponerlas!!

Pero ese no es el problema. El problema es usar las variables fuera de la funcion.

Muchas gracias de todas formas.

Por portavoz

23 de clabLevel



Genero:Masculino  

Galicia

msie
Citar            
MensajeEscrito el 12 May 2006 01:17 pm
hay un par de problemas:
1. Es que se ejecuta antes el attachMovie() que la funcion onLoad, por tanto la variable direccion aun no ha sido actualizada y no carga el video. Lo puedes comprobar poniendo un trace("1"); bajo el attachMovie y un trace("2) en la funcion onLoad (primero saldrá el 1 y luego el 2). Para solucionar esto podrías llamar a la función attachMovie desde la función onLoad, así te asegurarías de que la variable se ha cargado.

generror_xml.onLoad = function(success) {
this[direccion] = generror_xml.firstChild.attributes.direccion;
_root.attachMovie("FLVPlayback", my_vp, 10,{contentPath:this[direccion]});
success = true ? trace(this[direccion]):null;
};

Otra solucion sería llamar a attachMovie varios frames más adelante en la misma película, de modo que se hubiese ejecutado onLoad por completo y actualizado así la variable direccion.

2. El otro problema es que this[direccion] dentro de la funcion onLoad no es la misma variable que this.direccion de my_vp.contentPath = this.direccion; el objeto this que utilizas en onLoad equivale al archivo xml cargado, es decir, si haces trace(this) en onLoad te devolverá:
<etiqueta direccion="D:\arbol.flv" />
Es mejor que utilices:
direccion = generror_xml.firstChild.attributes.direccion;
de este modo si podrías hacer fuera de onLoad:
attachMovie("FLVPlayback", my_vp, 10,{contentPath:this.direccion});

Espero que te sirva de ayuda, ya que yo también estoy empezando en esto de flash. Suerte

Por adriesp

113 de clabLevel

1 tutorial

Genero:Masculino  

Salamanca

opera

 

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