Comunidad de diseño web y desarrollo en internet online

Problema con hitTest y niveles

Citar            
MensajeEscrito el 19 Jul 2008 03:25 pm
Hola amigos,
Aquí estoy con un problema para pediros vuestra ayuda y conocimientos. He indagado por los foros para ver si se había tocado este tema, pero los post que he encontrado no me han ayudado del todo. El caso es el siguiente:

He desarrollado un sencillo juego de lucha y utilizo hitTest para comprobar los impactos y los movimientos de los personajes por el escenario, comprobando mediante hitTest si los clips se tocan entre sí.
La película funciona perfectamente cuando se carga individualmente, pero el hitTest deja de funcionar cuando cargo la película en un escenario más grande, por ejemplo, en un nivel que quiero posicionar en el centro de una pantalla principal o, incluso, en un mc que utilizo como contenedor. Lo que no entiendo es que tanto en el caso de un nivel como en el de un contenedor, si éstos se posicionan en 0,0 todo funciona perfectamente, pero si los desplazo a cualquier posición de la pantalla dejan de funcionar.
Es como si el clip que utilizo para el hitTest perdiera la referencia del origen de posición del mc y tomara la del escenario.

Podría cambiar toda la programación para que los valores _x e _y de los movieclips fueran asignados por una variable, en lugar de utilizar sus posiciones reales. Esta variable podría controlarla por el tamaño del escenario, pero me llevaría mucho trabajo reprogramar todo.

Agradecería cualquier idea o sugerencia.

Gracias de antemano,
Flip

Por flip_sp

18 de clabLevel



 

msie7
Citar            
MensajeEscrito el 19 Jul 2008 04:06 pm
SOLUCIONADO.

Hola otra vez, amigos.
Tras publicar mi post, seguí buscando por ahí una solución a mi problema. Hay gente por ahí realmente brillante que, además, comparte sus conocimientos.

La solución a este problema, por si alguien lo necesitara es esta:

MovieClip.prototype.oldHitTest = MovieClip.prototype.hitTest;
MovieClip.prototype.hitTest = function(x, y, sf){
var obj = {x:x, y:y};
this._parent.localToGlobal(obj);
return this.oldHitTest(obj.x, obj.y, sf);
}


Tenéis información más detallada en:

http://www.bit-101.com/blog/?p=499

Un saludo

Por flip_sp

18 de clabLevel



 

msie7

 

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