El problema que se me presenta es con la detección de colisión entre la línea y el circulo.
Al parecer al redibujar la linea durante el MOUSE_MOVE, esta toma las dimensiones de un cuadrado limitado por los extremos de la misma. El problema es que este cuadrado "imaginario" es el que colisiona con el circulo y no la linea.
A alguien se le ocurre como hacer para que la linea (u otro objeto grafico que represente una linea que se pueda redimensionar) colisione correctamente con otro objeto?
Les dejo el codigo
Código:
nodoi y nodof, son instancias en el escenario de un circulo pequeño de donde arrastrar para redimensionar la linea, esta se dibuja entre un nodo y otro dinamicamente.import flash.display.MovieClip; import flash.display.Shape; import flash.events.MouseEvent; import flash.events.Event; var linea:Shape = new Shape(); addChild(linea); linea.graphics.lineStyle(10,0x000000,1); linea.graphics.moveTo(nodoi.x,nodoi.y); linea.graphics.lineTo(nodof.x,nodof.y); nodoi.addEventListener(MouseEvent.MOUSE_DOWN, onNodoIMouseDown); nodoi.addEventListener(MouseEvent.MOUSE_UP, onNodoIMouseUp); nodoi.addEventListener(MouseEvent.MOUSE_MOVE, onNodoMouseMove); nodof.addEventListener(MouseEvent.MOUSE_DOWN, onNodoFMouseDown); nodof.addEventListener(MouseEvent.MOUSE_UP, onNodoFMouseUp); nodof.addEventListener(MouseEvent.MOUSE_MOVE, onNodoMouseMove); function onNodoIMouseDown(e:MouseEvent):void { nodoi.startDrag(); e.updateAfterEvent(); } function onNodoIMouseUp(e:MouseEvent):void { nodoi.stopDrag(); } function onNodoMouseMove(e:MouseEvent):void { if (linea.hitTestObject(punto)) { punto.alpha = 0.5; } else { punto.alpha = 1; } linea.graphics.clear(); linea.graphics.lineStyle(10,0x000000,1); linea.graphics.moveTo(nodoi.x,nodoi.y); linea.graphics.lineTo(nodof.x,nodof.y); e.updateAfterEvent(); } function onNodoFMouseDown(e:MouseEvent):void { nodof.startDrag(); } function onNodoFMouseUp(e:MouseEvent):void { nodof.stopDrag(); }
punto, es el circulo instanciado en el escenario.
Desde ya Muchas Gracias!
Saludos
Mariano