Comunidad de diseño web y desarrollo en internet online

Variable dentro de Funcion.

Citar            
MensajeEscrito el 28 Ene 2008 03:47 pm
Variable dentro de Funcion.
Buenas a todos, mi primer post en el foro de cristalab.

Estoy intentando enviar unas variables desde una Función en el frame 1, a un clip de pelicula llamado fotillas, de un fotograma clave en el frame 10.

es algo parecido a esto:

Código :

function startSearch() {

myDataSet2 = new Array();
      for (var i = 0; i<myResults.length; i++) {
         var img = XPath.selectNodes(myResults[i], "./img")[0].firstChild.nodeValue;
         var web = XPath.selectNodes(myResults[i], "./web")[0].firstChild.nodeValue;
         myDataSet2.push({IMG:img, WEB:web});
      }
fotillas.fotos = myDataSet2;
}


y en el frame 10 he puesto esto:

Código :

trace (fotos);


pero la salida me sigue dando "Undefined".

Sabeis como hacer que me envíe esos dos datos de variable al clip de pelicula fotillas?

Un saludo a todos y quedo atento.

Por isladelobos

4 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ene 2008 03:56 pm
Pues la forma de hacer que una variable se guarde en todo el SWF es utilizando la propiedad _global. Intenta enviar la variable que necesitas como _global y luego la imprimes en el frame que necesitas. Yo creo que funciona también desde niveles y/o rutas complejas dentro de los clips de pelicula.

Saludos!!!

Por vcomics

217 de clabLevel



 

Medellin - Colombia

firefox
Citar            
MensajeEscrito el 28 Ene 2008 04:14 pm
Gracias vcomics.

Funciona bien, lo unico que ahora en la salida me muestra:

[object Object]

no define el contenido, supongo que está bien, solo tengo que probarlo.

Por isladelobos

4 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Ene 2008 04:22 pm
Y que es exactamente lo que necesitas que imprima? porque debes tener en cuenta que la ventana de salida no te imprimirá detalles del archivo externo pero si te puede imprimir todo tipo de variables, estados, niveles, instancias, entre otras cositas como contenidos de texto externos.

Debes enviar la variable con algún significado (Number, String, Boolean...)
Si me hago entender?
Saludos!!!

Por vcomics

217 de clabLevel



 

Medellin - Colombia

firefox
Citar            
MensajeEscrito el 28 Ene 2008 04:43 pm
Bueno, no es por desdecir a vcomics, pero el uso de variables globales no es recomendable, usan más recursos y no son muy seguras (puedes cambiarlas por accidente en cualquier momento y te costaría horrores detectar el error). En tu caso se presentan dos problemas, ambos de ámbito:

  1. El clip de película "fotillas" está en el fotograma 10, lo que significa que cuando tratas de pasar el Array, aquel aún no existe. No te da error porque Flash, por defecto, crea una variable con ese nombre y le asigna el Array.
  2. El Array "myDataSet2" sólo existe dentro de la función, así que al terminar, la variable se borra.

De todas maneras, la solución es casi igual a la que te da vcomics, excepto que la variable no será global sino de Línea de Tiempo (si no sabes qué son variables de línea de tiempo, te recomiendo que busques "ámbito de variables" en la ayuda de flash)

Código :

var myDataSet2:Array;
function startSearch() {
myDataSet2 = new Array();
      for (var i = 0; i<myResults.length; i++) {
         var img = XPath.selectNodes(myResults[i], "./img")[0].firstChild.nodeValue;
         var web = XPath.selectNodes(myResults[i], "./web")[0].firstChild.nodeValue;
         myDataSet2.push({IMG:img, WEB:web});
      }
}


La razón por la que el trace te devuelve [Object Object] es porque le estás pasando un Array de objetos. Si quieres que te muestre un elemento de ese Array tienes que hacer algo como:

Código :

trace(fotos[0].IMG);

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 28 Ene 2008 05:15 pm
Hola The Fricky!... te pregunto algo: las funciones creadas en línea de tiempo pueden ser utilizadas tambien dentro de MCs y personalizarlas con el mismo?, es decir, absorver la funcion para eliminar la propiedad _global.
:?

Por vcomics

217 de clabLevel



 

Medellin - Colombia

firefox
Citar            
MensajeEscrito el 28 Ene 2008 05:23 pm
Sí, claro. Funcionan como cualquier objeto en flash. Sólo que (igual que con cualquier otro objeto) debes escribir la ruta hacia la variable (por ejemplo _parent.miVariable).

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 28 Ene 2008 05:37 pm
jejeje.. gracias por resolver mi duda!!!
:wink:

Por vcomics

217 de clabLevel



 

Medellin - Colombia

firefox
Citar            
MensajeEscrito el 29 Ene 2008 08:16 am
Fantastico !!

Muchas gracias vcomics y The Fricky, muy ilustrativo.

He recogido y he preparado en el frame 10 esto, y ha funcionado de maravilla.

for (var i = 0; i < myDataSet2.length; i++) {
thumb = myDataSet2[i].IMG;
holder_mc = createEmptyMovieClip("holder_mc" + i, i + 100);
item = holder_mc.createEmptyMovieClip("diapo" + i, i + 100);
item.loadMovie(thumb);
holder_mc._x = x;
holder_mc._y = y;
holder_mc.url = myDataSet2[i].WEB;
holder_mc.onRelease = function() {
getURL(this.WEB);
};

esto recoge los datos del array y los imprime perfectamente.
Ahora tengo que mirar a ver si funcionaria en otro clip de pelicula, o en otros clips, a ver que profundidad maxima puedo darle a un dato

Gracias y quedo atengo.

Por isladelobos

4 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Ene 2008 08:38 pm
Cerciorate de que la ruta de "fotillas" está bien especificada... puedes hacerla absoluta. :P

Por gustavogarzon

166 de clabLevel



 

msie7
Citar            
MensajeEscrito el 31 Ene 2008 09:38 am
Buena, ya he conseguido que funcione perfectamente.

Esto de estar haciendo un script tan dificil y al mismo tiempo siguiendo un curso, es bastante bueno para ir aprendiendo, pero siempre surgen obstaculos que hay que sortear, esto es lo bonito, que de esto se aprende mucho.

En este caso, posteo de nuevo el sctipt del movieclip ya realizado.

Código :

function fotos() { 
x = 3;
y = 3;
ancho = 105;
alto = 80;
num_columnas = 3;
columna = 0;

holder_mc.removeMovieClip();         <<<<----aqui reside mi problema----


      for (var v = 0; v < _root.myDataSet2.length; v++) {
         
         thumb = _root.myDataSet2[v].IMG;      
         holder_mc = createEmptyMovieClip("holder_mc" + v, v + 100);
         item = holder_mc.createEmptyMovieClip("diapo" + v, v + 100);
         item.loadMovie(thumb);
         holder_mc._x = x;
         holder_mc._y = y;
                      holder_mc.url = _root.myDataSet2[v].WEB;
         holder_mc.onRelease = function() {
            getURL(this.url);
         };
         x += ancho;
         columna += 1;
         if (columna == num_columnas) {
            columna = 0;
            x -= (ancho * num_columnas);
            y += alto;
         }
}
}


Como veis, he marcado que holder_mc.removeMovieClip(); no me borra todas las imagenes que imprime, en este caso, solo se borra la ultima imagen de todas las que se cargan dentro del movieclip holder_mc.
esta es la imagen.
[IMG]http://s1.subirimagenes.com/imagenes/previo/thump_1842347Sin ttulo1.jpg[/IMG]

Como se observa, en la primera busqueda, me muestra 12 imagenes y en la segunda busqueda, tendría que borrar todas las imagenes pero me borra solamente la ultima que se cargó.

Luego me metere con una paginación, pero esto es otra historia.

Un saludo.

Por isladelobos

4 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Feb 2008 09:08 am
Nada, no encuentro como solucionarlo.

Tengo algúnas ideas, pero nada, algo como lo siguiente:

Código :

function remove() {

   hideCat();
function hideCat() {
   for(var i=0; i<catTotal; i++) {
      var eachCat = catWrap_mc["cat_mc"+i];
      eachCat._visible = false;
   }
}



o como lo siguiente:

Código :

temp.onEnterFrame = function(){
      if(i<count){
         imgWrap_mc["thumb_mc"+i].tnHider_mc.alphaTo(100, 1, undefined, 0, function() 
{ this._parent.removeMovieClip() });
                  
         i++
      } else {
         hideCat();
         delete this.onEnterFrame;
      }
   }



Necesito un cable. gracias.

Por isladelobos

4 de clabLevel



 

msie7

 

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