Foros del Web » Creando para Internet » Flash y Actionscript »

hitTest no reconoce nombre de la peli pasado por variable

Estas en el tema de hitTest no reconoce nombre de la peli pasado por variable en el foro de Flash y Actionscript en Foros del Web. Estimados amigos tengo un pequeño rompecabezas en el que utilizo hitTest() y funciona bien, pero como son muchas fichas decidí poner las ordenes en una ...
  #1 (permalink)  
Antiguo 29/08/2007, 15:06
 
Fecha de Ingreso: julio-2003
Mensajes: 100
Antigüedad: 14 años, 4 meses
Puntos: 0
hitTest no reconoce nombre de la peli pasado por variable

Estimados amigos tengo un pequeño rompecabezas en el que utilizo hitTest() y funciona bien, pero como son muchas fichas decidí poner las ordenes en una función para funcione mejor.

La funcion para cuando se hace release es:

suelto=function(a,b){
var ficha = a;
var posicion = b;
if (ficha.soltar!="centro") {intentos++;}
if (ficha.centro.hitTest(posicion.centro)) { // <----- aqui es el problema
if (ficha.soltar!="centro") {aciertos++;}
ficha.soltar = "centro";
ficha._x = posicion._x;
ficha._y = posicion._y;
} else {
ficha.soltar = "si";
}
stopDrag();
}

si en la línea donde está el problema pongo directamente el nombre la peli, p3,

if (ficha.centro.hitTest(p3.centro)) {


funciona bien, pero el momento que le pongo la variable posicion no.
hice un trace(posicion); y el resultado es p3

Agradezco su ayuda
  #2 (permalink)  
Antiguo 30/08/2007, 01:52
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 13 años, 4 meses
Puntos: 12
Re: hitTest no reconoce nombre de la peli pasado por variable

Se me ocurren dos posibles soluciones. La primera hace referencia a la declaración de la variable:

var posicion:MovieClip = b;

Y la segunda es sobre la línea del hitTest:

if (ficha.centro.hitTest(this[posicion].centro)) {...

Personalmente, me quedo con la primera. Te comento las dos por dar más opciones (no las pruebes a la vez).

Saludos!
  #3 (permalink)  
Antiguo 30/08/2007, 10:29
 
Fecha de Ingreso: julio-2003
Mensajes: 100
Antigüedad: 14 años, 4 meses
Puntos: 0
Re: hitTest no reconoce nombre de la peli pasado por variable

Muchas gracias, funcionó muy bien. La segunda opción fue la indicada, te agradezco tu ayuda.

Algo que no me atrevía a preguntar es el significado de los 2 puntos :

En el opcion 1 tienes var posicion:MovieClip = b; en esta asumo por deducción que los dos puntos son para decirle el tipo de dato que contiene la variable, es eso correcto? Si me puedes explicar un poco más para que se utiliza los : te agradezco, aunque este fuera del tema

Slds
FS

Última edición por soasti; 30/08/2007 a las 10:36
  #4 (permalink)  
Antiguo 12/09/2007, 22:34
 
Fecha de Ingreso: julio-2003
Mensajes: 100
Antigüedad: 14 años, 4 meses
Puntos: 0
Re: hitTest no reconoce nombre de la peli pasado por variable

Hasta ahora iba bien, el rompecabezas funciona bien si son fichas diferentes, pero si tengo fichas similares que pueden colocarse en varios lugares no logro que funcione.



Código:
suelto=function(a){
	var cual = a; //contiene el path de la peli que llamó la función _level0.ficha1
	var contPosiciones=0;
	
	
	while (contPosiciones < cual.posiciones.length) {

//cual.posiciones es un array definido en la ficha y son posiciones[0]="p1" y el [1]="p2"

			var conCual=cual.posiciones[contPosiciones];

			trace(conCual); // resultado= p1
			trace(this[conCual]);// resultado= _level0.p1
			if (cual.hitTest(this[conCual]) ) { // <-----------  aqui esta el problema
				cual.choco==true;
				trace(cual.choco);
			}
			contPosiciones++;
		}
}
Te agradezco mucho si me puedes guiar

Slds
FS
  #5 (permalink)  
Antiguo 13/09/2007, 03:00
Avatar de Mahalo  
Fecha de Ingreso: julio-2004
Ubicación: Mallorca (Illes Balears)
Mensajes: 1.121
Antigüedad: 13 años, 4 meses
Puntos: 12
Re: hitTest no reconoce nombre de la peli pasado por variable

No estoy seguro de haberte comprendido porque no entiendo que no funcione con fichas "similares". El hitTest funciona siempre entre dos mc's. Lo que sí es condición necesaria es que los mc's tengan nombres de instancia diferentes.

Ah, y no te apures por el trace que devuelve _level0.p1, porque estás llamando directamente al mc. Para acceder a su nombre está la propiedad _name.
Código:
trace (this[conCual]._name);
Ojo, no estoy diciendo que cambies la línea del hitTest porque está bien.

Saludos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:50.