Comunidad de diseño web y desarrollo en internet online

Crear un MovieClip dentro del constructor de una clase

Citar            
MensajeEscrito el 06 Ene 2007 03:09 am
Hola,

Creo un MovieClip en el constructor de mi clase, para cargarle dentro una imagen (necesito hacer esto para más tarde aplicarle filtros dinámicamente). Mi código funciona, el problema es que el swf va dentro de otro swf, y no puedo usar el _root que esta en el código. Tampoco me gustaria solucionarlo a traves de _lockroot. Entonces, ¿como puedo hacer funcionar el createEmptyMovieClip? (Uff, espero que se me entienda, igual es mucho pedir :o)

Código de la clase:

Código :

class ImagIlustrations{
   
   public function ImagIlustrations(archivo:String){
      var i_mc:MovieClip;
      i_mc = _root.createEmptyMovieClip("i_mc",1);
      trace("this: " + this);                          //Salida: this: [object Object]
      loadMovie("ilustrations/" + archivo, i_mc); 
   }
}


Código linea principal:

Código :

import com.prueba.*

stop();

var imag1:ImagIlustrations = new ImagIlustrations("Crist.jpg");


Ótra preguntilla es en la linea:

Código :

trace("this: " + this);                          //Salida: this: [object Object]


Alguien me podria explicar porque pone eso de "[object Object]". No me da demasiada información, es más no se no por donde me da el aire :shock:

Muchas gracias.

Por Maikel82

8 de clabLevel



Genero:Masculino  

Spain

firefox
Citar            
MensajeEscrito el 06 Ene 2007 12:13 pm
Pásale una variable que se refiera al destino del clip que quieras que sea:

Código :

public function creaObjeto(ruta:String, destino:MovieClip){
destino.createEmptyMovieClip(...)
}


Y la salida, es la que da para todos los objects y clases que exienden Object. para una información más completa, puedes hacerlo así:

Código :

for (a in objeto){
trace(a+": "+objeto[a]);
}


O puedes usar el depurador de flash (Ctrl+Shift+Enter)

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 06 Ene 2007 03:54 pm
Estupenda la primera respuesta.

Pero no llego a entender a que hace referencia "this" dentro del constructor. Aqui van mis preguntas y el nuevo código sobre el que he hecho las pruebas:

1. ¿ "this" No seria un objeto que pertenece a mi hilo principal ?(exactamente el objeto creado "preg1" del tipo "Pregunta"
2. Al poner el trace de "this._parent" me da un error de sintaxis que dice "No hay ninguna propiedad que lleve por nombre '_parent'." ¿No hay nada por encima de ese "this"?
3. He probado lo del for-in para obtener una informacion mas completa del "this", ¿por qué no obtengo nada por pantalla?

Código utilizado:

En la clase:

Código :

class Pregunta{
   
   public function Pregunta(destino:MovieClip){
      
      trace("this:      " + this);                //Salida:   this:      [object Object]
      //trace("this._parent:" + this._parent); //No funciona el codigo si pongo esto.
      trace("typeof this: " + typeof(this));      //Salida:  typeof this: object
      for (var a:String in this){                      //No produce nada en la salida
         trace("for-in this: " +a+": "+this[a]);
      }
      
      trace("destino:      " + destino);        //Sale algo lógico
      trace("typeof(destino): " + typeof(destino)); //Sale algo lógico
      for (var b in destino){                         //Esto si que produce algo lógico a la salida
         trace("for-in destino: " +b +": "+destino[b]);
      }      
   }
}


En el principal:

Código :

import com.pruebas.*

stop();

var preg:Pregunta = new Pregunta(this);
}


Me he leido las explicaciones del siguiente link pero no consigo aclarar mis dudas: http://www.cristalab.com/tips/28962/ambito-de-variables-en-actionscript-scope-this

Muchas gracias. ¿Deberia haber creado un nuevo hilo al reconstruir la pregunta inicial?

Por Maikel82

8 de clabLevel



Genero:Masculino  

Spain

firefox
Citar            
MensajeEscrito el 06 Ene 2007 05:12 pm
1:

2:
Los objetos no tienen propiedad _parent, te las tendrás que apañar con scope's. Está el objeto donde creas la instancia de pregunta, que será _root
3:
La verdad, no lo sé. He estado un rato pensando en por qué no sale y no se me ocurre... Deberías poder.

Ayuda de flash escribió:

En archivos de clase externos, los miembros estáticos no pueden enumerarse, a diferencia de los miembros de instancias.

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 07 Ene 2007 03:04 pm
Muchas gracias Zah.

Tambien me he resuelto mi pregunta 3. No salia nada al hacer el for-in y querer visualizar su interior con trace porque no tenia nada, y logicamente, no visualizaba nada. He creado una variable dentro de la clase pero fuera del constructor, la inicializo dentro del constructor y después hago el for-in con el trace q muestra esta variable. Pongo el código que se explica por si solo bastante mejor que yo con esta parrafada.

Código :

class Pregunta{
   
   public var mivar:Number;
   
   public function Pregunta(destino:MovieClip){

      mivar = new Number(5);
      trace("this:      " + this);//Salida: this:   [object Object]
      for (var a:String in this){
         trace("for-in this: " +a+": "+this[a]);
      }//Salida:  for-in this: mivar: 5
   }
}

Por Maikel82

8 de clabLevel



Genero:Masculino  

Spain

firefox

 

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