Comunidad de diseño web y desarrollo en internet online

Referencia a instancia

Citar            
MensajeEscrito el 09 Jul 2011 04:40 pm
¡Buenas!

¿Cómo referencias a una instancia de cierta clase que ha sido arrastrada de la biblioteca al escenario, desde una clase concreta?

La única manera que he averiguado es pasandole como parametro el nombre de instancia arrastrada al constructor de la clase que quiero que interactue con la instancia arrastrada y almacenando ese parametro en una variable de tipo MovieClip. Pero si hay muchas intancias arrastradas desde la biblioteca en tiempo de diseño y quiero interactuar con ellas desde alguna otra clase este método no creo que sea el adecuado.

No se si lo estoy haciendo bien.

Gracias de "hantebrazo, hoyga".

Por Zeneke

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jul 2011 05:06 pm
En realidad si tu clase está en el displayList, puede acceder elementos usando getChildAt o directamente parent.nombreDeInstancia, según sea la ruta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Jul 2011 06:10 pm
Entiendo entonces que si la instancia ha sido arrastrada al escenario desde la biblioteca en tiempo de diseño, la ruta seria Stage.nombreDeInstancia, importando obviamente la clase flash.display.Stage; o no?

Muchas gracias!

Por Zeneke

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jul 2011 06:20 pm
stage es una propiedad de los elementos que están en el displayList, si vas desde root sería:

root.nombreDeInstancia

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Jul 2011 06:30 pm
No consigo referenciar.

Nombre de instancia se refiere a la variable que usamos para almacenar la instancia de la clase o a la propiedad name de la clase?

Desde un método de la clase Pieza, quiero chequear si está tocando con una instancia de la clase Cuadro en el momento en el que he soltado el ratón. La instancia de tipo Cuadro ha sido arrastrada desde la biblioteca al escenario y en sus propiedades le he dado el nombre de instancia "cuadro". Las dos instancias están en el DisplayList del escenario, vamos que una no es contenedora de otra ni nada.

Clase Pieza:

Código ActionScript :

   
[...]   
      this.addEventListener(MouseEvent.MOUSE_UP,soltar);
         
      function soltar(e:MouseEvent):void
         {
         
         if (this.hitTestObject(parent.getChildByName("cuadro"))==false) 
            {

            parent.removeChild(this);
            }
         }
[...]

Solo consigo referenciarme asi. Pero no asi :

Código ActionScript :

[...] if (this.hitTestObject(parent.cuadro))[...]
Toma cuadro como una propiedad y da error.

Por Zeneke

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Jul 2011 06:35 pm
Desde dentro de una clase no sabe que es parent, y menos cuadro, está bien con getChildByName

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Jul 2011 06:45 pm
Ok. ¿ Y que sistema es mejor? ¿El de getChildByName o el pasarle al constructor cuadro y almacenarlo en una propiedad de tipo MovieClip? ¿Habria alguna otra manera?

Una duda relacionada: Cuando arrastro el simbolo al escenario y en sus propiedades, en nombre de instancia le añado cualquier nombre, Flash crea una variable con ese nombre donde almacena la instancia o modifica la propiedad name de esa instancia? Supongo que lo primero.

Por Zeneke

13 de clabLevel



 

chrome
Citar            
MensajeEscrito el 11 Jul 2011 06:48 pm
Las dos formas estan atadas a una instancia en particular, haz un método público setTarget en donde le pasas el nombre de la instancia contra la que quieres hacer el hitTest, así al menos podrás reutilizarlo.
La segunda pregunta: modifica la propiedad name

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 11 Jul 2011 06:53 pm
Ok, muchisimas gracias por todo.
Quiza use dropTarget en vez de hitTestObject, el problema seria cuando suelto la instancia en vacio, es decir, donde no hay ningun tipo de instancia de ninguna clase. Aunque eso es otro cantar.

Gracias, Jorge.

Por Zeneke

13 de clabLevel



 

chrome

 

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