Comunidad de diseño web y desarrollo en internet online

Modo debug en ActionScript? Problemas para ejecutar una func

Citar            
MensajeEscrito el 25 Jun 2009 04:30 pm
Tengo un problema que consiste en que creo que el flujo de la pelicula no entra a una funcion. Hay algun modo debug para action script? (Estoy usando Adobe Flash CS4)


De todos modos dejo la funcion que llama a la siguiente funcion, por si hay algo mal (no me da errores en la publicacion)


En esta funcion entra sin problemas.

Código ActionScript :

  function  cargaXML(loaded)
  {
          if  (loaded)
          {
                  xmlNode  =  this.firstChild;
                  image  =  [];
                  description  =  [];
                  thumbnails  =  [];
                  total  =  xmlNode.childNodes.length;
                  i  =  0;
                  while  (i  <  total)
                  {
                          image[i]  =  xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
                          description[i]  =  xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
                          thumbnails[i]  =  xmlNode.childNodes[i].childNodes[2].firstChild.nodeValue;
                          thumbnails_fn(i);  /*  Esta  es  la  llamada  a  la  funcion  que  quiero  ejecutar  y  no  funciona  */
                          ++i;
                  }
                  firstImage();
                  return;
          }
          content  =  "file  not  loaded!";
  }
 


Esta es la funcion que no funciona, creo que es porque no llega a entrar, pero por si acaso la copio por si hay algo mal hecho.

Código ActionScript :

function  thumbnails_fn(k)  {
          thumbnail_mc.createEmptyMovieClip("t"+k,thumbnail_mc.getNextHighestDepth());
          tlistener  =  new  Object();
          tlistener.onLoadInit  =  function  (target_mc)
          {
                  target_mc._x  =  hit_left._x  +  (target_mc._width  +  5)  *  k;
                  target_mc.pictureValue  =  k;
                  target_mc.onRelease  =  function  ()
                  {
                          p  =  this.pictureValue  -  1;
                          nextImage();
                  }
                  ;
                  target_mc.onRollOver  =  function  ()
                  {
                          this._alpha  =  50;
                          thumbNailScroller();
                  }
                  ;
                  target_mc.onRollOut  =  function  ()
                  {
                          this._alpha  =  100;
                  }
                  ;
          }
          ;
          image_mcl  =  new  MovieClipLoader();
          image_mcl.addListener(tlistener);
          image_mcl.loadClip(thumbnails[k],"thumbnail_mc.t"+k);
  }
 


Muchas gracias por vuestra ayuda.

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jun 2009 06:06 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Jun 2009 06:11 pm
Muchas gracias por el tip.

Estan en la misma linea de tiempo, incluso estan en el mismo script. He intentado "tracearlo" usando

Código ActionScript :

 Trace ("mensajes")


Pero no cambia absolutamente nada, y, por lo tanto, no puedo estar seguro de que la funcion thumbnails_fn se ejecute ni si recibe parametros

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jun 2009 06:14 pm
Lo primero es ver si está en scope, pon debajo de la llamada:

Código ActionScript :

  ....
   thumbnails_fn(i);  /*  Esta  es  la  llamada  a  la  funcion  que  quiero  ejecutar  y  no  funciona  */ 
   trace("Llamando a "+thumbnails_fn)
   ....

Debería salir type function
Si sale quiere decir que está en scope, entronces ya traza la llamada:

Código ActionScript :

function  thumbnails_fn(k)  { 
    trace("thumbnails_fn llamada !!")
    ...


Usa trace con minúsculas ya que AS2 es case sensitive. Si la función es llamada, entonces ya debes revisar las acciones que se supone ejecuta.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos



Ultima edición por solisarg el 25 Jun 2009 09:18 pm, editado 1 vez

Argentina

firefox
Citar            
MensajeEscrito el 25 Jun 2009 09:14 pm
No se si te habras dado cuenta, pero soy novato en esto, jejejejejeje

Solo una aclaracion, cuando dices que compruebe que esta en scope, el trace debe estar justo despues de la llamada a la funcion?
Si es asi, esta hecho, con minusculas como me has dicho, y no sucede absolutamente nada, y es muy extraño, porque si te fijas, justo antes he llamado a dos funciones que estan definidas en el mismo sitio donde esta la funcion thumbnails_fn.

De todos modos, al hacer un trace, exactamente donde devolveria el mensaje para poder verlo, podria estar debajo de la propia pelicula?

Si es asi, como podria llevarme el trace al frente, cambiando unicamente la capa en la que se ejecuta este script o por codigo tambien se puede forzar?

Muchas gracias jorge, y disculpa el rato que te estoy haciendo perder con esto, que seguro que es para principiantes.

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jun 2009 09:19 pm
Pon los trace tal cual te los puse en mi anterior POST y dime si obtienes salida. Si no sale nada, ni siquiera se hace la llamada del loop y hay que ir mas atrás

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Jun 2009 11:44 am
Muchisimas gracias por tu ayuda jorge.

Efectivamente entra a la funcion, pero no muestra la lista de imagenes.

Podria ser que con la siguiente instruccion:

Código ActionScript :

thumbnail_mc.createEmptyMovieClip("t"+k,thumbnail_mc.getNextHighestDepth());

lo este llevando al fondo y se quede detras de alguna capa que lo cubra?

En este caso, que propiedad le tendria que dar a tumbnail_mc para que quede al frente?

Y repito, ya te has convertido en mi idolo tio, muchisimas gracias por tu ayuda

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Jun 2009 06:02 pm
Al usar getNextHighestDepth va al nivel mas alto, es decir al frente. Traza thumbnail_mc a ver si lo crea

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Jun 2009 07:03 pm
Ok, creo que lo crea. Te dejo la funcion con todas las trazas y lo que me devuelve la salida, a ver que carajo estoy haciendo mal, porque realmente no me lo explico.

Código ActionScript :

function thumbnails_fn(k) {
   thumbnail_mc.createEmptyMovieClip("t"+k,thumbnail_mc.getNextHighestDepth());
   trace("thumbnails: "+thumbnail_mc);
    tlistener = new Object();
   trace ("Listener: "+tlistener);
   trace ("1 target: "+target_mc);
    tlistener.onLoadInit = function (target_mc)
   {
   trace ("2 target: "+target_mc);
    
        trace ("entra en la funcion que posiciona los thumb")
      target_mc._x = hit_left._x + (target_mc._width + 5) * k;
        target_mc.pictureValue = k;
        target_mc.onRelease = function ()
        {
            trace("entra a la funcion que llamara la siguiente imagen")
         p = this.pictureValue - 1;
            nextImage();
        }
        ;
        target_mc.onRollOver = function ()
        {
            trace ("oscurece la foto")
         this._alpha = 50;
            thumbNailScroller();
        }
        ;
        target_mc.onRollOut = function ()
        {
            trace("pone la foto en original")
         this._alpha = 100;
        }
        ;
    }
    ;
    image_mcl = new MovieClipLoader();
    image_mcl.addListener(tlistener);
    image_mcl.loadClip(thumbnails[k],"thumbnail_mc.t"+k);
   trace("carga el clip");
}


Y la salida de esto es:

thumbnails: _level0.thumbnail_mc
Listener: [object Object]
1 target:

A parte me da un error con la url del archivo XML, pero eso no es problema, ya que, aunque este tomando bien el archivo, no funciona. De todos modos, y no se por que, el segundo trace al target_mc no entra, y no se si porque es eso.

Muchas gracias, no me cansare de dartelas, jejejeje.

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Jun 2009 12:09 pm
No veo que salga ninguna traza dentro del onLoadInit ... ¿no los pusiste o no sale nada?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 Jun 2009 04:46 pm
No entiendo exactamente que es lo que me quieres decir con eso

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Jun 2009 05:28 pm
Estos dos trace:

trace ("2 target: "+target_mc);

trace ("entra en la funcion que posiciona los thumb")

¿Salen?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Jun 2009 01:36 pm
He borrado mi anterior respuesta, porque estamos yendo por mal camino ya que target_mc es un objeto y las funciones son propiedades que solo se ejecutaran cuando sucedan eventos en el listener.
He trazado tambien las instrucciones

Código ActionScript :

image_mcl = new MovieClipLoader(); 
image_mcl.addListener(tlistener); 
image_mcl.loadClip(thumbnails[k],"thumbnail_mc.t"+k); 


Que son las que realmente cargan los thumbnails.

En principio parece que todo esta ok, te copio la salida, por si te sirve de algo.

k= 1 - Hago un trace al valor de K, que es el parametro que recibe esta funcion
hola - Hola es el valor de thumbnails[k], que contiene la ruta e imagen de la fotografia a mostrar (en este caso le he puesto un valor a mano para tenerlo controlado.

[type Object] - corresponde a una traza que hago a image_mcl - que es el clip que se genera para cada previsualizacion.

Todas estas trazas las hago despues de que se ejecute la instruccion:

Código ActionScript :

image_mcl.loadClip(thumbnails[k],"thumbnail_mc.t"+k);


Y repito por enesima vez, pero espero que no sea la ultima, jejejejeje, muchisimas gracias jorge

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jun 2009 01:27 pm
Se me olvido decirtelo, los trace:
trace ("2 target: "+target_mc);

trace ("entra en la funcion que posiciona los thumb")

no salen

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Jun 2009 02:10 pm
Entonces thumbnails[k] no existe (verifica trazando) o no carga (error de carga)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Jun 2009 09:12 am
Hola jorge.

Bueno, he podido avanzar algo, la galeria de los coj.... por fin se carga!!!! jajajajajaja.

Exactamente no se que es lo que he hecho, porque practique como 20 cosas y alguna de ellas fue la que funciono.

El problema que tengo ahora es que me pone todos los thumbs en el mismo sitio, uno encima del otro, no se si me explico. Entonces ya puedo estar seguro de que no entra a la siguiente funcion:

Código ActionScript :

 tlistener.onLoadInit = function (target_mc) 
   { 
   trace ("2 target: "+target_mc); 
     
        trace ("entra en la funcion que posiciona los thumb") 
      target_mc._x = hit_left._x + (target_mc._width + 5) * k; 
        target_mc.pictureValue = k; 
        target_mc.onRelease = function () 
        { 
            trace("entra a la funcion que llamara la siguiente imagen") 
         p = this.pictureValue - 1; 
            nextImage(); 
        } 
        ; 
        target_mc.onRollOver = function () 
        { 
            trace ("oscurece la foto") 
         this._alpha = 50; 
            thumbNailScroller(); 
        } 
        ; 
        target_mc.onRollOut = function () 
        { 
            trace("pone la foto en original") 
         this._alpha = 100; 
        } 
        ; 
    } 


Seguire mirando a ver porque no entra. Este va a ser mas complicado, puesto que el xml en el que carga las rutas de los archivos se lo paso como parametro cuando llamo a la animacion desde la web, pero vamos, veremos a ver que puedo hacer.

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jun 2009 09:14 am
Se me olvido decirtelo el objeto "target_mc" lo crea sin problemas, ya que cuando pongo el raton encima del thumb (el ultimo que carga es el que ve) y lo quito, el metodo alpha se ejecuta sin problemas y cambia su opacidad.

Por indito

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Jun 2009 02:29 pm
Bueno jorge, lo primero agradecerte tu ayuda, que me ha venido muy bien, y he aprendido algo.

Lo segundo decirte que ya he conseguido que las previsualizaciones se muestren cada una en su sitio, lo he hecho forzando a las coordenadas a ser numeros enteros con la instuccion "parseInt".

Se que es una estupidez, pero bueno, cuando no sabes un lenguaje de programacion, cualquier tonteria te parece un mundo.

Lo dicho, muchisimas gracias y que te vaya todo bien

Por indito

6 de clabLevel



 

firefox

 

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