`
hsys
  • 浏览: 286739 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Action Script实现控件拖动

    博客分类:
  • Flex
阅读更多
保存下来,以便日后使用

package {
	import flash.display.DisplayObject;
	import flash.display.Shape;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.filters.DropShadowFilter;
	import flash.geom.Point;
	import flash.text.TextField;
	
	[SWF(width="800", height="600")]
	public class example extends Sprite
	{
		private var _red:Sprite;
		private var _green:Sprite;
		private var _blue:Sprite;
		private var _white:Sprite;
		// 保存被拖动对象原始坐标
		private var startingLocation:Point;
		
		public function example()
		{
			/*---------- 拖动 ----------*/
			createRectangles( );
			addEventListeners( );
		}
		
				
		private function createRectangles( ):void {
			_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 );
		}
		
		private function addEventListeners( ):void {
			_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;
		}

	}
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics