Pues te voy a colaborar de rapidez, ya que estoy haciendo lo mismo pero ahora estoy afanado, por ir a estudiar, y justo en estos días he estado haciendo eso, pero lo más interesante es el modo en que tienes que ver las cosas. Te lo voy a decir así, para que más adelante no tengas problemas y puedas analizar más a fondo la situación, y yo se que a veces no es por culpa de nosotros, si no que es por falta de conocer todas las herramientas del lenguaje de programación.
Arrastrar un elemento gráfico, que implica?
Supongamos que es una ventana, pero esta ventana solo puede ser arrastrada si se hace click en el área de título, no en el área de contenido. Esto implica tener 3 divs, el div contenedor, llamado ventana, y dentro de este, el div título, y el div contenido. Por medio de CSS o como quieras se aplica estilo para diferenciarlos y darle ese toque de sistemas con interfaz de ventanas. Claro está que puede ser un punto, un cuadrado, o todo el relleno como en tu caso, es solo un ejemplo.
Las acciones que se realizan con el ratón generalmente son click normal, click secundario, doble click, mover el mouse, oprimir cualquiera de los dos botones y soltarlo el botón para dejar de presionar, si estamos seleccionando algo.
Cuando estamos arrastrando un objeto visual con el raton, se realizan solo dos de estas acciones, hacer click con el mouse, pero sin soltar el boton, movemos el mouse. Finalmente para dejar el elemento en su posición final, solo soltamos el botón del mouse. Aquí tenemos tres eventos, que se pueden detectar fácilmente, estos son:
mouse down: cuando se oprime el botón, ojo solo oprimirlo, no soltarlo
mouse move: cuando se muevel el raton, sin importar que el boton este oprimido o no
mouse up: cuando se suelta el botón del mouse.
Ojo, el evento click hace referencia a mousedown y mouseup juntos, es decir, oprimir el boton y soltarlo, por eso no se utiliza.
por otro lado te hará falta reconocer la posición del mouse respecto al navegador cuando se generó un evento, esto lo haces con clientX y clientY de la clase event, y para reconocer la posición del elemento a mover, eso lo haces refiriendote al elemento por medio de
Código Javascript
:
Ver originaldocument.getElementById("areaCirculo").offsetTop;
document.getElementById("areaCirculo").offsetLeft;
offsetTop devuelve la posición del elemento en pixeles de acuerdo al margen superior del contenido
offsetLeft la devuelve con respecto a la margen izquierda.
luego lo que tienes que hacer es que mientras el boton del mouse está oprimido, es decir, mientras no se ha generado el evento mouseup, y se mueva el mouse, es decir se genera el mousemove, igualas las posicion en x e y del elemento con la del mouse.
Una vez se libera el botón del mouse, se cancela la función relacionada con el evento mousemove.
Estudia todos estos elementos, dale vuelta en la cabeza, y esta noche en clase, apenas lo logre te doy más tips, más entendibles, pero por ahora solo saca lo que importa, te resumo
mousedown + mousemove, y mientras esto sucede, posición del elemento se iguala a la del mouse, por medio de clientX/clientY (de event para el mouse), y offsetTop/offsetLeft para el elemento. Hay algo que no te estoy diciendo y espero que pronto te des cuenta.
Finalmente con mouseup, cancelas todas las actualizaciones de posición. Esto se hace con removeEventListener.
Los primeros eventos se los asignas al elemento que necesitas que reconozca el click del mouse, en este caso el relleno de las figuras, supongo que será un div o una imagen.
Otra cosa addEventListener funciona en todos menos en Internet Explorer
attachEvent funciona en internet explorer. Generalment yo no programo para internet explorer
Ojalá entiendas.. yo haré lo posible por ayudarte luego.. pero estudia lo que te dije con calma.. para que aprendas a desarrollar este estilo de problemas
Exitos