Comunidad de diseño web y desarrollo en internet online

hitTest y otras historias

Citar            
MensajeEscrito el 19 Feb 2006 01:00 pm
Hola que hay, tengo un problema con el hitTest, arrays y for...vereis os cuento:
Tengo dos arrays llamados "c" y "p" con movieclips cada uno y tengo otros 4 objetos movieclips mas del que saco unos puntos de coordenadas con getBounds. Pues bien, a la hora de saber si las coordenadas obtenidas con getBounds caen, es decir colisionan, con el movieclip correspondiente del array en su posicion no detecta nada, en teoría el codigo no da ningun error a la hora de validarlo, pero no aparece en la salida el trace acierto que le he puesto cuando eso ocurre.
Si podeis ayudar o dar alguna sugerencia, gracias de antemano.

Ahí va el codigo

on (press) {
a = objeto1.getBounds(_root);
ax1 = a.xMin;
ax2 = a.xMax;
ay1 = a.yMin;
ay2 = a.yMax;
b = objeto2.getBounds(_root);
bx1 = b.xMin;
bx2 = b.xMax;
by1 = b.yMin;
by2 = b.yMax;
c = objeto3.getBounds(_root);
cx1 = c.xMin;
cx2 = c.xMax;
cy1 = c.yMin;
cy2 = c.yMax;
d = objeto4.getBounds(_root);
dx1 = d.xMin;
dx2 = d.xMax;
dy1 = d.yMin;
dy2 = d.yMax;
for (f=0; f< 4; f++) {
if ((c[f].hitTest(ax1, ay1, true)) and (p[f].hitTest(ax2, ay2, true))) {
trace(acierto);
}
if ((c[f].hitTest(bx1, by1, true)) and (p[f].hitTest(bx2, by2, true))) {
trace(acierto);
}
if ((c[f].hitTest(cx1, cy1, true)) and (p[f].hitTest(cx2, cy2, true))) {
trace(acierto);
}
if ((c[f].hitTest(dx1, dy1, true)) and (p[f].hitTest(dx2, dy2, true))) {
trace(acierto);
}
}
}

Por unomas

3 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 19 Feb 2006 06:05 pm

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 20 Feb 2006 12:19 am
Hola unomas,

Lo primero antes de hacer nada prueba ha cambiar el nombre del vector "c" o el del objeto c=objeto3 porque eso te puede dar problemas. Podría ser que interpretase el elemento f del vector c como el objeto3
otro = objeto3.getBounds(_root);

Si esto no es entonces, sigue con esto:
Por lo que veo solo quieres que se calcule la poción cuando: pulsas el botón o el frame cambia y luego vuelve y se repite. Por que si no es así tendrás que jugar con un:
Listener.onMouseMove = function() {

}

Bueno, por que no pruebas mejor ha hacerlo con algo parecido a:

on (press) {
for (i=0; i< c.length; i++) {
var acierto1:Boolean = a.hitTest(c[i]);
var acierto2:Boolean = b.hitTest(c[i]);
var acierto3:Boolean = c.hitTest(c[i]);
var acierto4:Boolean = d.hitTest(c[i]);

if ( (acierto1 || acierto2 || acierto3 || acierto4) ) {
trace(acierto);
}
};
}

con esto de entrada te ahorras el tener que calcular las coordenadas y lo que tendrá en cuenta para que acierto1,2,3 o 4 sean true sera si simplemente se tocan los movieClips y la cosa va de colisiones... ¿no?.

Bye

Por ardic

3 de clabLevel



 

msie

 

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