Ver Mensaje Individual
  #8 (permalink)  
Antiguo 31/07/2010, 02:33
Avatar de mortiprogramador
mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Pregunta sobre desplazamiento de objeto (juego de cartas)

Hola
bueno, pues apunto las cañas

en cuanto a lo tuyo

te pregunto, con actionscript2 o 3? y que conocimiento tienes
del lenguaje??

en cualquiera de los dos casos, piensa en lo siguiente:

1. tienes que tener posiciones fijas para los "arcanos" (para cada tirada)
2. tienes que tener una baraja con n cartas
3. las cartas tienen que tener el evento de mover
4. las cartas en algún momento dejaran de repartirse porque
se llenaron las posiciones, entonces el evento mover ya no es necesario

así las cosas, haremos un ejemplo práctico (en as3):

creamos un fla nuevo, y agregamos 2 figuras (1 gris, 1 azul)
(solo necesitariamos 1
pero pues como no se tu experticia en as lo hago lo más sencillo)

luego seleccionamos la gris, la copiamos y la pegamos 3 veces (esto para hacer las posiciones finales de los arcanos) y las ponemos en las posiciones que queramos

después convertimos la figura azul a movieclip (clic derecho, opción convertir a simbolo) y le damos un nombre (por ej carta1), y una vez hecho esto, quedara convertido a movieclip y en el panel de propiedades veremos un campo llamado nombre de instancia, y allí de nuevo vamos a ponerle un nombre (yo le puse carta1)

listo, ahora tenemos que copiar la figura azul 6 veces (para un total de 7) e igualmente las posicionamos donde queramos, lo único es que a cada copia debemos darle un nombre de instancia distinto (carta2, carta3, etc) en el panel de propiedades

las grises solo serán de uso para saber donde tienen que ir las
otras (azules elegidas), incluso si quieres puedes borrarlos luego, lo que nos interesa
son las coordenadas (x,y) de cada figura gris)

tendremos algo así:




y luego viene el código, el cual pondremos en la línea de tiempo principal, fotograma1

Código actionscript:
Ver original
  1. import flash.events.MouseEvent;
  2. import flash.display.MovieClip;
  3.    
  4. var pos = 0;
  5. var posicion_y = 51.96;
  6. var posiciones:Array = new Array(106.4,232.4,306.35,378.35);
  7.  
  8. carta1.addEventListener(MouseEvent.CLICK, mover);
  9. carta2.addEventListener(MouseEvent.CLICK, mover);
  10. carta3.addEventListener(MouseEvent.CLICK, mover);
  11. carta4.addEventListener(MouseEvent.CLICK, mover);
  12. carta5.addEventListener(MouseEvent.CLICK, mover);
  13. carta6.addEventListener(MouseEvent.CLICK, mover);
  14. carta7.addEventListener(MouseEvent.CLICK, mover);
  15.  
  16. function mover(e:MouseEvent):void{
  17.     this[e.target.name].x = posiciones[pos];
  18.     pos++;
  19.     this[e.target.name].y = posicion_y;
  20.     if( pos == posiciones.length )
  21.         removeListeners();
  22. }
  23.  
  24. function removeListeners():void{
  25.     carta1.removeEventListener(MouseEvent.CLICK, mover);
  26.     carta2.removeEventListener(MouseEvent.CLICK, mover);
  27.     carta3.removeEventListener(MouseEvent.CLICK, mover);
  28.     carta4.removeEventListener(MouseEvent.CLICK, mover);
  29.     carta5.removeEventListener(MouseEvent.CLICK, mover);
  30.     carta6.removeEventListener(MouseEvent.CLICK, mover);
  31.     carta7.removeEventListener(MouseEvent.CLICK, mover);    
  32. }

partes a resaltar

pos será la variable que se incrementara cada vez que se de
clic en alguna carta, y la que nos ayudara a mover la carta seleccionada

posicion_y es la posición en y de las cartas grises (en mi caso tanto las
cartas azules como grises estan en una misma posición)

posiciones es un arreglo donde manejaremos las posiciones en X de las
cartas grises:Array = new Array(106.4,232.4,306.35,378.35);

asi pués la figura gris más a la izquierda tiene x = 106.4 y la que está más a la derecha tiene 378.35 (4 posiciones en total)

y listo, en la función mover lo que hago es precisamente eso, muevo la
carta sobre la que di click a la posición y fija de las grises (posision_y)
y a la posición x que este en el arreglo posiciones que este en la ubicación pos (pues pos es quien se incrementa en 1 cada vez que hay una tirada)
y allí mismo un if donde pregunto si pos es igual al total de posiciones del array, y si se cumple, que remueva la función mover de las cartas, y con eso
ya queda funcionando

espero te sirva de guia y perdona por la demora pero estaba mi equipo
en mantenimiento

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com