Que tal, vieno tu problema podria darte una solucion, en este caso para que no sea tan extenso lo voy a hacer con dos cuadrados (cuadrado1 y cuadrado2) nada mas y la programacion que llevaria el cuadrado1 para que el 2 se adecue en el.
Por empezar tenemos los dos cuadrados con sus respetivos nombres de instancias antes mencionados.
En este ej hago que el cuadrado dos vaya justo encima del 1, despues es solo cambiar coordenadas.
Ahora ponemos este codigo:
Código PHP:
var idintervalo;
cuadro1.onRollOver = movimiento1;
function mover1() {
posx=cuadro1._x; //justo igual porque va en la misma pos de x
posy=cuadro1._y-100; //-100 porque va justo encima
//uso Math.floor ya que sino por decimales puede que nunca me de igual
//ya que podria comparar 100<>100.1 y daria falso cuando
//en ese caso queremos que ya de verdadero
if((Math.floor(cuadro2._x) <> posx) || (Math.floor(cuadro2._y) <> posy){
if (cuadro2._x < posx){
cuadro2._x+=1
}else{
if (cuadro2._x > posx){
cuadro2._x-=1
}
}
if (cuadro2._y < posy){
cuadro2._y+=1
}else{
if (cuadro2._y > posxy){
cuadro2._y-=1
}
}
}else{
clearInterval (idintervalo)
}
}
function movimiento1 () {
idintervalo=setInterval(mover1,1)
}
Con esto logramos que al posicionarnos en el cuadro1 el cuadro2 se mueva encima de este, despues se podria hilar mas fino que si queres que no quede ni una diferencia decimal lo compruebe y le sume o reste 0,1.
Tambien faltaria la parte que si salimos de encima de un cuadrado las figuras vuelven a su lugar original, ya eso no se como preferis, pero no es un codigo muy complicado si ya dejamos de ante mano guardado las posiciones de todos los cuadrados.
Espero haberte ayudado un poco.
hasta luego
El Duende