<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal"
    backgroundColor="#333333" xmlns:tools="tools.*" creationComplete="init();"
   >
<mx:Script>
<![CDATA[
    import mx.core.UIComponent;
    import mx.core.DragSource;
    import mx.events.DragEvent;
    import mx.managers.DragManager;

[Embed(source="000.png")]
    private var imgsrc:Class;

private function init():void
    {
        img1.source = imgsrc;
        img2.source = imgsrc;
    }

/**
     * 开始拖拽
     * */
    private function dragHandler(event:MouseEvent):void
    {
        // 定义拖拽挂载数据源
        var dsragSource = new DragSource();
        // 定义拖拽图标(用于第二副图片的拖拽)
        var di:Image = new Image();
        // 拖拽对象
        var target:Image = event.currentTarget as Image;

// 添加拖拽数据源数据
        dsragSource.addData(target, "img");
        dsragSource.addData(event.localX, "x");
        dsragSource.addData(event.localY, "y");

// 拖拽图标
        if (target.id == "img2")
            di.source = new Bitmap(getBitmapData(target.content));
        else
            di = null;
        // 执行拖拽
        DragManager.doDrag(target, dsragSource, event, di);
    }
    /**
     * 进入拖放区域
     * */
    private function dragEnterHandler(event:DragEvent):void
    {
        // 进入区域, 设置状态为允许拖放
        if (event.dragSource.hasFormat("img"))
            DragManager.acceptDragDrop(event.target as UIComponent);
    }
    /**
     * 释放拖拽
     * */
    private function dragDropHandler(event:DragEvent):void
    {
        // 复制图片
        var img:Image = new Image();
        img.source = new Bitmap(getBitmapData(event.dragSource.dataForFormat("img") as DisplayObject));
        // 处理图片防止位置
        img.x = event.currentTarget.mouseX - (event.dragSource.dataForFormat("x") as Number);
        img.y = event.currentTarget.mouseY - (event.dragSource.dataForFormat("y") as Number);
        // 显示图片
        event.currentTarget.addChild(img);
    }
    /**
     * 获取图片信息
     * */
    private function getBitmapData(target:DisplayObject):BitmapData
    {
        var res:BitmapData = new BitmapData(target.width, target.height);
        res.draw(target);
        return res;
    }
]]>
</mx:Script>
<mx:VBox>
    <mx:Image id="img1" mouseDown="dragHandler(event);" />
    <mx:Image id="img2" mouseDown="dragHandler(event);" />
    <mx:Button label="Clear Images" click="testArea.removeAllChildren();" />
</mx:VBox>
<mx:Canvas id="testArea" backgroundColor="#ffffff" width="100%" height="100%"
    dragEnter="dragEnterHandler(event);" dragDrop="dragDropHandler(event);" />

</mx:Application>

FLEX拖动时复制图片的更多相关文章

  1. MATLAB复制图片时边框大的问题

    当使用MATLAB画图时,需要将图片复制到word中,会发现图片有一个白色的边框,在论文的排版中是一个影响美观的问题 例如: >> x = 0:10; >> y = sin(x ...

  2. java IO流复制图片

    一.使用字节流复制图片 //字节流方法 public static void copyFile()throws IOException { //1.获取目标路径 //(1)可以通过字符串 // Str ...

  3. CefBrowser 复制图片解决办法

    使用的是CefSharp控件,开放出的功能比较多,但是还是有一些封闭的.例如复制图片到Clipbord,库没有提供. VC虽然看得懂,但托管代码没搞过,看得很蛋痛,而且如果有CefSharp有新版本还 ...

  4. html5 canvas画图之图形随拖动而复制(有操作指示)

    学习html5 canvas,写了一个小练习来加深理解,可以实现图形随拖动而复制. <!DOCTYPE html> <html> <head> <meta c ...

  5. universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法

    在listview/gridview中使用UIL来display每个item的图片,当图片数量较多需要滑动滚动时会出现卡顿,而且加载过的图片再次上翻后依然会重复加载(显示设置好的加载中图片) 最近在使 ...

  6. 织梦cms网上复制图片不可用的解决方法

    背景描述: 织梦cms采集图片集时, 需要使用织梦cms提供的"网上复制图片"的功能, 好像我这里这个功能一直不可用, 今天下定决心研究了下源代码并进行了适当修改, 将我的修改提供 ...

  7. JAVA之旅(二十六)——装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片

    JAVA之旅(二十六)--装饰设计模式,继承和装饰的区别,LineNumberReader,自定义LineNumberReader,字节流读取操作,I/O复制图片 一.装饰设计模式 其实我们自定义re ...

  8. java IO流 复制图片

    (一)使用字节流复制图片 //字节流方法 public static void copyFile()throws IOException { //1.获取目标路径 //(1)可以通过字符串 // St ...

  9. 复制图片链接和标题生成Markdown文本

    写Markdown的时候常常会需要复制图片链接和标题以插入图片,不借助其他工具的话,一般需要先在Markdown文件中输入插入图片的格式,然后在浏览器中复制图片链接和标题将其依次粘贴到Markdown ...

随机推荐

  1. mysql DML语句学习1

    DML 操作是指对数据库中表记录的操作,主要包括表记录插入(insert).更新(update).删除(delete)和查询(select) 1. 插入记录 表创建好后,就可以往里插入记录,基本语句如 ...

  2. 4、Python文件操作工具 xlsxwriter 工具

    # _*_ encoding:utf-8 _*_ import xlsxwriter #创建xlsx后缀名的excelexcel = xlsxwriter.Workbook(r'D:\github\f ...

  3. Java虚拟机12:虚拟机性能监控与故障处理工具

    前言 定位系统问题的时候,知识.经验是基础,数据是依据,工具是运用知识处理数据的手段.这里说的数据包括:运行日志.异常堆栈.GC日志.线程快照.堆转储快照等.经常使用适当的虚拟机监控和分析的工具可以加 ...

  4. Ubuntu root 密码忘记-恢复

    @Ubuntu root 密码忘记-恢复 2012-04-27 11:09:22 方法一: 如果用户具有sudo权限,那么直接可以运行如下命令: #sudo su root #passwd #更改密码 ...

  5. iOS动画的逻辑结构:动画的定义--动画是采用连续播放静止图像的方法产生物体运动的效果。

    动画的定义:视图+时间+空间+速度 视图信息的时空变换: 视图组的按时间逐帧展示: Core Animation 类的继承关系图 各类常用属性 CAMediaTiming:CALayer和Core A ...

  6. BZOJ2588:Count on a tree(主席树)

    Description 给定一棵N个节点的树,每个点有一个权值,对于M个询问(u,v,k),你需要回答u xor lastans和v这两个节点间第K小的点权.其中lastans是上一个询问的答案,初始 ...

  7. VC++使用socket进行TCP、UDP通信实例总结

    1.        两台计算机通信需要协议,通信的两台计算机IP必须唯一 2.        同一个计算机可以进行多个应用程序与其他计算机通信,IP地址唯一,而端口号是区别同一计算机(同一IP)的唯一 ...

  8. 将宿主主机上的目录挂载到Docker中

    docker run -it -v /home/zhouqun/文档/workplace:/var/www/html ubuntu64 /bin/bash 将宿主主机中/home/文档/workpla ...

  9. 404 Note Found 队 Alpha8

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  10. CentOS7开发环境搭建

    BIOS开启VT支持 查询笔记本进入BIOS的按键,启动BIOS的虚拟化设置 假设安装360卫士,那么请永久关闭Intel-VT核晶防护引擎 CentOS DNS配置 Linux 下设置DNS位置有3 ...