In the following code i have two square sprite and one circle sprite which is draggable with mouse. My question is when circle overlaps target1 and target2, targets stop to receive mouse move events. If mouse pointer pass through from boundaries of circle they receive roll over event. Same situation occurs while dragging circle.
I am trying to generate a visual feedback (for example “it is correct place to drop” feedback). But while I drag the circle nothing happens on rolled over targets…
Thanks…
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
public class test extends Sprite
{
public var circle:Sprite;
public var dragging:Boolean;
public function test()
{
trace("Hello");
circle= new Sprite();
circle.graphics.beginFill(0xFFCC00);
circle.graphics.drawCircle(0, 0, 40);
circle.x = 150;
circle.y = 150;
var target1:Sprite = new Sprite();
drawSprite( target1, 280, 100, 0xFF00CC );
target1.name = "target1";
var target2:Sprite = new Sprite();
drawSprite( target2, 30, 100, 0xFF00CC );
target2.name = "target2";
addChild(target1);
addChild(target2);
addChild(circle);
circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown ) ;
stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMove) ;
stage.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
target1.addEventListener(MouseEvent.ROLL_OVER, mouseOn );
target1.addEventListener(MouseEvent.ROLL_OUT, mouseOff );
target2.addEventListener(MouseEvent.ROLL_OVER, mouseOn );
target2.addEventListener(MouseEvent.ROLL_OUT, mouseOff );
dragging = false;
}
public function mouseDown(event:MouseEvent):void
{
//circle.startDrag();
dragging = true;
}
public function mouseReleased(event:MouseEvent):void
{
//circle.stopDrag();
dragging = false;
if ( null != circle.dropTarget )
{
trace(circle.dropTarget.name);
}
}
public function stageMouseMove( event:MouseEvent ):void
{
if ( dragging )
{
circle.x = stage.mouseX;
circle.y = stage.mouseY;
}
}
public function mouseOn( event:MouseEvent ):void
{
drawSprite(event.target as Sprite, event.target.x, event.target.y, 0xFF0000 );
}
public function mouseOff( event:MouseEvent ):void
{
drawSprite(event.target as Sprite, event.target.x, event.target.y, 0xFF00CC );
}
public function drawSprite( mc:Sprite,x:int, y:int, color:int):void
{
mc.graphics.clear();
mc.graphics.beginFill(color);
mc.graphics.drawRect(0, 0, 100, 100);
mc.x = x;
mc.y = y;
}
}
}