拖动类

package com
{
    import mx.core.UIComponent;  
    import mx.core.DragSource;  
    import mx.controls.Image;  
    import mx.events.DragEvent;  
    import mx.managers.DragManager;  
    import flash.display.DisplayObject;  
    import flash.display.BitmapData;  
    import flash.display.Bitmap;  
    import flash.events.MouseEvent;  
      
    public class DragUtil  
    {  
        public function DragUtil() {  
        }  
 
        /** 
         * 开始拖拽 
         * */ 
        public static function dragHandler(event:MouseEvent):void 
        {  
            // 定义拖拽挂载数据源  
            var dsragSource:DragSource = new DragSource();  
            // 定义拖拽图标  
            var copy:Image = new Image();  
            // 拖拽对象  
            var target:Image = event.currentTarget as Image;  
      
            // 添加拖拽数据源数据  
            dsragSource.addData(target, "img");  
            dsragSource.addData(event.localX, "x");  
            dsragSource.addData(event.localY, "y");  
      
            // 拖拽图标  
            copy.source = new Bitmap(getBitmapData(target.content));  
            // 执行拖拽  
            DragManager.doDrag(target, dsragSource, event, copy);  
        }  
        /** 
         * 进入拖放区域 
         * */ 
        public static function dragEnterHandler(event:DragEvent):void 
        {  
            // 进入区域, 设置状态为允许拖放  
            if (event.dragSource.hasFormat("img"))  
                DragManager.acceptDragDrop(event.target as UIComponent);  
        }  
        /** 
         * 释放拖拽 
         * */ 
        public static function dragDropHandler(event:DragEvent):void 
        {  
            var img:Image = event.dragSource.dataForFormat("img") as Image;  
            // 处理图片防止位置  
            img.x = event.currentTarget.mouseX - (event.dragSource.dataForFormat("x") as Number);  
            img.y = event.currentTarget.mouseY - (event.dragSource.dataForFormat("y") as Number);  
        }  
        /** 
         * 获取图片信息 
         * */ 
        private static function getBitmapData(target:DisplayObject):BitmapData  
        {  
            var res:BitmapData = new BitmapData(target.width, target.height);  
            res.draw(target);  
            return res;  
        }  
    }  

}


--使用
<?xml version="1.0" encoding="utf-8"?> 
<mx:Application   
    xmlns:mx="http://www.adobe.com/2006/mxml"   
    layout="absolute" 
    width="100%" 
    height="100%" 
    minWidth="350" 
    minHeight="136" 
    backgroundColor="#ffffff" 
    > 
    <mx:Script> 
        <![CDATA[ 
            import com.DragUtil; 
        ]]> 
    </mx:Script> 
    <mx:Canvas id="testArea" backgroundColor="#ffffff" width="100%" height="100%"   
        dragEnter="DragUtil.dragEnterHandler(event);" dragDrop="DragUtil.dragDropHandler(event);" > 
        <mx:Image source="../assert/bg.jpg" mouseDown="DragUtil.dragHandler(event);" /> 
    </mx:Canvas> 
      
</mx:Application>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值