ActionScript - Problemas con MovieClip

 
Vista:

Problemas con MovieClip

Publicado por Amparo (2 intervenciones) el 04/12/2006 11:27:18
Hola,

soy nueva en AS, he hecho una pequeña aplicación que lo que hace es: tengo 6 movieclips, 3 de ellos contienen una imagen diferente y los otros 3 son los contenedores de la imagen que le corresponde a cada uno. De lo que se trata es de arrastrar cada una de las imagenes y llevarla a su lugar correspondiente y si no es el correcto devolverla a su lugar de origen. Esto funciona bien, pero el problema que tengo es que cuando arrastro los movieclips con las imagenes por encima de los otros movieclips con imagenes se meten por debajo y desaparecen. Hay alguna propiedad para pueda modificar en los moviclip para que queden todos al mismo "nivel" en la capa? Gracias de antemano.

Saludos,
Amparo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Resolver problema de z-order en movie clips arrastrables

Publicado por Alejandro (369 intervenciones) el 22/06/2023 22:11:13
El problema que estás experimentando se debe al orden de apilamiento de los movie clips en la capa. Por defecto, cuando arrastras un movie clip sobre otro, el último objeto arrastrado se coloca en la parte superior de la pila de visualización, ocultando los objetos que estén debajo de él.

Para solucionar este problema y asegurarte de que todos los movie clips estén al mismo nivel en la capa, puedes utilizar la propiedad `swapDepths()` en ActionScript.

Aquí tienes un ejemplo de cómo puedes usar `swapDepths()` para mantener los movie clips en el mismo nivel de visualización:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Asigna un nivel de profundidad inicial a los movie clips
mc1.swapDepths(1);
mc2.swapDepths(2);
mc3.swapDepths(3);
mc4.swapDepths(4);
mc5.swapDepths(5);
mc6.swapDepths(6);
 
// Añade eventos de arrastre a los movie clips
mc1.onPress = function() {
  this.startDrag();
  this.swapDepths(7); // Coloca el objeto en la parte superior de la pila de visualización
};
 
mc1.onRelease = mc1.onReleaseOutside = function() {
  this.stopDrag();
  this.swapDepths(1); // Devuelve el objeto a su nivel de profundidad inicial
};
 
// Repite el mismo código para los otros movie clips (mc2, mc3, mc4, mc5, mc6)

En este ejemplo, asignamos niveles de profundidad iniciales a los movie clips utilizando `swapDepths()`. Luego, cuando se presiona uno de los movie clips para arrastrarlo, usamos `swapDepths()` nuevamente para colocar ese objeto en la parte superior de la pila de visualización.

Al soltar el objeto arrastrado, utilizamos `swapDepths()` una vez más para devolver el objeto a su nivel de profundidad inicial.

Recuerda ajustar los nombres de los movie clips (`mc1`, `mc2`, etc.) según tu estructura y asegurarte de que los niveles de profundidad asignados sean únicos y estén en el rango adecuado.

Con esta solución, todos los movie clips deberían mantenerse al mismo nivel en la capa y no se ocultarán unos a otros cuando los arrastres. ¡Espero que esto resuelva tu problema! ¡Buena suerte con tu aplicación!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar