Comunidad de diseño web y desarrollo en internet online

hitTestObject para principiante

Citar            
MensajeEscrito el 27 Ago 2013 11:23 am
Hola,

He convertido en clase dos mc que tenía en la biblioteca. Cada X tiempo se crea un child de cada uno de ellos y uno sale de la parte superior y otro de la inferior.

Hasta ahí todo bien. Ahora quiero que cada vez que colisionen me salte un trace, pero no lo consigo. Alguien sabe qué puedo estar haciendo mal?

Estoy utilizando el siguiente código para control de la colisión:

function fControl(MouseEvent){
if (mc_uno.hitTestObject(mc_dos)==true){
trace ("hit");
}
}
addEventListener(Event.ENTER_FRAME, fControl);

Gracias!

Por anzoni

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Ago 2013 11:54 am
Se crea automáticamente ... estas seguro que mc_uno y mc_dos hacen referencia a los clips que creaste?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 27 Ago 2013 12:03 pm
sí, de hecho estoy en un escenario de pruebas en el que sólo hay esos dos mc...

investigando parece que el problema es porque me refería a la clase y no al child, así que cada vez que creo un child lo añado a un Array y luego trato de hacer:

if (array_uno[a].hitTestObject(array_dos[i])==true){
trace ("hit");
}

pero me dice que:

TypeError: Error #1010: A term is undefined and has no properties.

Debo entender que es porque el evenListener comprueba el hitTest antes de que haya ningún objeto en el Array?

q lío!

Por anzoni

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 27 Ago 2013 03:02 pm
Lo que pusiste no tiene mucho sentifo, si solo hay dos mc porque un array?

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

safari
Citar            
MensajeEscrito el 27 Ago 2013 04:14 pm
la idea es que estos dos mc vayan saliendo continuamente y colisionen a media pantalla, cada X tiempo hago un addChild(mc_uno) y addChild(mc_dos).

Decía que sólo están los dos mc en relación a la pregunta anterior de si mc_uno y mc_dos hacen referencia a los clip que creé

Por anzoni

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Ago 2013 10:35 am
Empieza con uno solo y cuando veas que puedes hacer esa colisión, ya empiezas a agregar mas, vuelve al primer código

if (mc_uno.hitTestObject(mc_dos))

Lograste la colisión con solamente dos?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 30 Ago 2013 07:20 am
Hola!

finalmente lo he conseguido, no sé si será la forma más correcta pero funciona!

por si a alguien le sirve, al crear el child de mc_dos le he creado un evenListener ENTER_FRAME, que salta a la siguiente función:

function hitFunct(evt:Event) {
for(var i:int=0;i<array_uno.length;i++){
if (evt.target.hitTestObject(array_uno[i])) {
removeChild(array_uno[i]);
}
}
}

con esto consigo que al colisionar los dos objetos desaparezca el mc_uno :) (previamente los había metido en array_uno)

Por anzoni

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ago 2013 10:32 am
Excelente!

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome

 

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