Comunidad de diseño web y desarrollo en internet online

Problema Tangrams con HitTest

Citar            
MensajeEscrito el 06 Sep 2010 08:46 am
Buenos días, me han pedido que arregle un error en un flash y por más soluciones que leo e intento implementar no consigo que me funcione.

Tengo 7 piezas (clips de película) que he de colocar haciendo una forma, no se giran ni nada, solo se arrastran sobre otros 7 clips que son las posiciones de destino. El problema es como he visto en otros sitios, a la hora de evaluar el hittest este no lo hace sobre la forma que esta incluida en el clip sino sobre una zona rectangular que contiene la forma por lo cual con acercar un poco la ficha de origen sobre la de destino casi siempre ya te la coloca como correcta pese a que aun no te has casi ni acercado a la posición final donde debería estar.

Aquí os pongo uno de los swf para que veáis lo que ocurre. Enlace
Las fichas únicamente deberían colocarse en su posición final cuando la ficha toque la ficha que marca su posición final correcta.

El código actionscript que se esta utilizando ahora mismo es este:

Código ActionScript :

_global.tanDrag = function (origen) {
   if (origen.hitTest(_root._xmouse,_root._ymouse,1))
      origen.startDrag();      
}

  _global.tanDrop = function (origen,destino) {
   if (origen.hitTest(destino)) {
      origen._x = destino._x;
      origen._y = destino._y;
   }
   origen.stopDrag();
}

El proyecto está configurado como actionscript 2 y hasta ahora esta publicándose como flash 7

¿Podría alguien ayudarme? Muchas gracias por todo es la primera consulta que publico pese a que si que suelo buscar soluciones a problemas por aquí pero hasta hoy no me había surgido nada que consultar yo.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 06 Sep 2010 08:09 pm
mira yo solucione eso haciendolo de la siguiente manera si cada pieza en blanco es un moviclip para solucionarlo has dentro de esa pieza un moviclip mas pequeño y realizas la validacion del choque con ese movieclip lo creas como un cuadrado o la figura pero un poco mas pequeña y te debe servir XD

Por evangelio_ra

49 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Sep 2010 10:05 pm
Esa solución ya la tenía planeada como última posibilidad, y la verdad cada vez tengo más claro que tendrá que ser así jejeje. A ver si alguien conoce alguna otra solución, sino tendré que hacerlo de ese modo

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 06 Sep 2010 10:33 pm

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 07 Sep 2010 12:38 pm
Gracias por las respuestas, la clase no he tenido aún tiempo para examinar a ver que tal se me daría implantarla, pero lo miraré. Sobre la otra "solución" me temo que me va a venir mejor mirar la clase... he hecho una prueba y es demasiado impreciso pero bueno aún esta ahí en la recámara como última solución por si el añadir la clase se me complica.

Trabajo en una tienda de informática haciendo desde reparaciones a programación por eso no he tenido tiempo aún de poder mirar nada mas de la clase... en cuanto vea que tal ya comento.

Muchas gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 07 Sep 2010 02:26 pm
Pues no tiene mucho misterio. Sólo tienes que bajar el archivo con el fla del enlace que he puesto, y copiar la carpeta "com" en la carpeta de tu proyecto. Después importas la clase en tu proyecto con esta línea:

Código ActionScript :

import com.gskinner.sprites.CollisionDetection;

y cambias la siguiente línea:

Código ActionScript :

if (origen.hitTest(destino)) {

por esta otra:

Código ActionScript :

if (CollisionDetection.checkForCollision(origen, destino)) {

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Sep 2010 10:36 am
Muchísimas gracias, funciona a la maravilla simplemente con los cambios que has dicho, la verdad no era tan complicado de adaptar jejejej pero el otro día no hice más que abrir la web y vi el ejemplo funcionando no me pare a mirar más.

Como única pega esta el que tengo que guardar el proyecto como flash 8 en lugar de flash7 que era como estaba pero esta es una pega ínfima comparada con lo que le molestaba a la gente que se colocase la pieza tan fácilmente.

De nuevo muchas gracias a los dos por vuestras respuestas.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome

 

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