Flash / Flex / ActionScript/Development/Drag Drop

Материал из Web эксперт
Перейти к: навигация, поиск

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>