Flash / Flex / ActionScript/Development/Drag Drop
Drag and drop a Sprite
<source lang="java">
package {
import flash.display.Sprite; import flash.events.MouseEvent; [SWF(width=550, height=400)] public class Main extends Sprite { private var _canvas:Sprite = new Sprite(); public function Main() { _canvas _canvas.graphics.beginFill(0xF0F0F0); _canvas.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); _canvas.graphics.endFill(); _canvas.graphics.lineStyle(2, 0x000000); addChild(_canvas); _canvas.addEventListener(MouseEvent.MOUSE_DOWN, onCanvasMouseDown); _canvas.addEventListener(MouseEvent.MOUSE_UP, onCanvasMouseUp); } private function onCanvasMouseDown(event:MouseEvent):void { _canvas.graphics.moveTo(event.localX, event.localY); _canvas.addEventListener(MouseEvent.MOUSE_MOVE, onCanvasMouseMove); } private function onCanvasMouseMove(event:MouseEvent):void { _canvas.graphics.lineTo(event.localX, event.localY); event.updateAfterEvent(); } private function onCanvasMouseUp(event:MouseEvent):void { _canvas.graphics.lineTo(event.localX, event.localY); _canvas.removeEventListener(MouseEvent.MOUSE_MOVE, onCanvasMouseMove); } }
}
</source>
Dragging and Dropping
<source lang="java">
package{ import flash.display.Sprite; import flash.events.MouseEvent; public class Main extends Sprite {
private var draggableSprite:Sprite = new Sprite(); private var droppableSprite:Sprite = new Sprite(); private var nonDroppableSprite:Sprite = new Sprite(); public function Main () { draggableSprite.graphics.beginFill(0xff0000, 1); draggableSprite.graphics.drawCircle(0, 0, 10); draggableSprite.graphics.endFill(); droppableSprite.graphics.beginFill(0x0000ff, 1); droppableSprite.graphics.drawRect(0, 0, 100, 100); droppableSprite.graphics.endFill(); nonDroppableSprite.graphics.beginFill(0xff0000, 1); nonDroppableSprite.graphics.drawRect(0, 0, 100, 100); nonDroppableSprite.graphics.endFill(); addChild(nonDroppableSprite); addChild(droppableSprite); addChild(draggableSprite); nonDroppableSprite.x = 200; droppableSprite.x = 500; nonDroppableSprite.y = 100; droppableSprite.y = 100; draggableSprite.y = 100; draggableSprite.addEventListener(MouseEvent.MOUSE_DOWN, startDragSprite); draggableSprite.addEventListener(MouseEvent.MOUSE_UP, stopDragSprite); } private function startDragSprite(mouseEvent:MouseEvent):void { (mouseEvent.target as Sprite).startDrag(); } private function stopDragSprite(mouseEvent:MouseEvent):void { var target:Sprite = mouseEvent.target as Sprite; if (target.dropTarget == droppableSprite) { target.stopDrag(); } else { target.x = 0; } }
} }
</source>
Dragging and Dropping Objects with the Mouse
<source lang="java">
package {
import flash.display.Sprite; import flash.display.DisplayObject; import flash.events.MouseEvent; import flash.geom.Point; import flash.filters.DropShadowFilter; public class Main extends Sprite { private var _red:Sprite; private var _green:Sprite; private var _blue:Sprite; private var _white:Sprite; private var startingLocation:Point; public function Main( ) { _red = new Sprite( ); _red.graphics.beginFill( 0xFF0000 ); _red.graphics.drawRect( 0, 10, 10, 10 ); _red.graphics.endFill( ); _green = new Sprite( ) _green.graphics.beginFill( 0x00FF00 ); _green.graphics.drawRect( 0, 30, 10, 10 ); _green.graphics.endFill( ); _blue = new Sprite( ); _blue.graphics.beginFill( 0x0000FF ); _blue.graphics.drawRect( 0, 50, 10, 10 ); _blue.graphics.endFill( ); _white = new Sprite( ); _white.graphics.beginFill( 0xFFFFFF ); _white.graphics.drawRect( 20, 10, 50, 50 ); _white.graphics.endFill( ); addChild( _red ); addChild( _green ); addChild( _blue ); addChild( _white ); _red.addEventListener( MouseEvent.MOUSE_DOWN, pickup ); _red.addEventListener( MouseEvent.MOUSE_UP, place ); _green.addEventListener( MouseEvent.MOUSE_DOWN, pickup ); _green.addEventListener( MouseEvent.MOUSE_UP, place ); _blue.addEventListener( MouseEvent.MOUSE_DOWN, pickup ); _blue.addEventListener( MouseEvent.MOUSE_UP, place ); } public function pickup( event:MouseEvent ):void { startingLocation = new Point( ); startingLocation.x = event.target.x; startingLocation.y = event.target.y; event.target.startDrag( ); event.target.filters = [ new DropShadowFilter( ) ]; setChildIndex( DisplayObject( event.target ), numChildren - 1 ); } public function place( event:MouseEvent ):void { event.target.stopDrag( ); event.target.filters = null; if ( event.target.dropTarget == _white ) { var color:uint; switch ( event.target ) { case _red: color = 0xFF0000; break; case _green: color = 0x00FF00; break; case _blue: color = 0x0000FF; break; } _white.graphics.clear( ); _white.graphics.beginFill( color ); _white.graphics.drawRect( 20, 10, 50, 50 ); _white.graphics.endFill( ); } event.target.x = startingLocation.x; event.target.y = startingLocation.y; } }
}
</source>