Colisión de objetos - Campus Virtual ORT

Transcripción

Colisión de objetos - Campus Virtual ORT
Laboratorio de Administración de los Recursos - TIC
Prof. Marcelo Ranzoni
Colisión de objetos
Este ejemplo consistirá en dos clips, uno que será el que se va a
arrastrar, y otro que será el que esté quieto en el escenario y que
servirá de referencia cuando el primero pase por encima de el.
Por lo que a cada uno le pondremos un nombre de instancia, al
primero le ponemos clip1 y al segundo clip2
Hay que resaltar que el clip2 debe estar debajo del clip1, por
lo que ponemos cada uno en un layer, estando el clip2 debajo
del clip1.
En nuestra película principal ponemos en el frame 1:
stop();
clip1inicioX = clip1._x;
clip1inicioY = clip1._y;
En donde:
clip1inicioX y clip1inicioY son las coordenadas iniciales del
clip1.
Estas nos servirán más adelante por eso las declaramos ahora.
El stop() se pone porque toda la acción transcurrirá en un solo
frame.
Para hacer el drag 'n' drop de un movie clip se pone un botón
dentro de un clip y con éste conseguimos arrastrar el clip
Ahora vamos al botón que hemos creado dentro del clip1, y en
este le ponemos las siguientes acciones:
on (press) {
startDrag("_root.clip1", true);
}
on (release) {
stopDrag();
if (_root.clip1.hitTest(_root.clip2)) {
_root.clip1._x = _root.clip2._x;
_root.clip1._y = _root.clip2._y;
} else {
_root.clip1._x = _root.clip1inicioX;
_root.clip1._y = _root.clip1inicioY;
}
}
Aquí vemos que estamos arrastrando el clip1, pero la parte
que realmente importa en cuando lo soltamos.
Laboratorio de Administración de los Recursos - TIC
Prof. Marcelo Ranzoni
Una vez que lo hemos soltado con stopDrag(), hacemos dos
comprobaciones:
Primera comprobación:
if (_root.clip1.hitTest(_root.clip2)) {
_root.clip1._x = _root.clip2._x;
_root.clip1._y = _root.clip2._y;
}
Esto quiere decir que comprobamos si el clip1 ha hecho
colisión con el clip2.
Si es así entonces lo que hacemos es ponerle al clip1 las
coordenadas del clip2, por lo que parece que el primero se
"pega" al segundo cuando lo soltamos.
Por último la segunda comprobación:
else {
_root.clip1._x = _root.clip1inicioX;
_root.clip1._y = _root.clip1inicioY;
}
Aquí es el caso en que los 2 clips no hacen colisión, por lo que
luego de soltarlo, el clip1 vuelve su posición inicial, es por eso
que al principio declarabamos la posición inicial de éste.

Documentos relacionados