Flex4图片在指定区域内自由拖拽移动,缩放图片大小例子

如果图片过大,一般我们展示的时候要允许用户通过鼠标滚轮进行缩放,同时点击可以拖拽移动(类似百度地图那样的操作)。下面通过一个样例进行演示: 

 

效果图如下:

 

 

<?xml version="1.0" encoding="utf-8">      
代码如下所示?xml>

 

<?xml version="1.0" encoding="utf-8"?>

<s:Application xmlns:fx="
http://ns.adobe.com/mxml/2009
"

               xmlns:s="library://ns.adobe.com/flex/spark"

               xmlns:mx="library://ns.adobe.com/flex/mx"

               backgroundColor="0x404040"

               creationComplete="init(event)">

    <fx:Script>

        <![CDATA[

            import mx.events.FlexEvent;

             

            //图片缩放比例

            private var _imgScale:Number = 1;

            //图片坐标

            private var _imgX:Number = 0;

            private var _imgY:Number = 0;

             

            /**

             * 设置监听

             */

            protected function init(event:FlexEvent):void

            {

                img.addEventListener(MouseEvent.MOUSE_DOWN, itemMouseDown);

                img.addEventListener(MouseEvent.MOUSE_UP, itemMouseUp);

                img.addEventListener(MouseEvent.ROLL_OUT, itemMouseUp);

                img.addEventListener(MouseEvent.MOUSE_WHEEL, itemMouseWheel);

            }

             

            /**

             * 鼠标按下开始拖动

             */

            private function itemMouseDown(event:MouseEvent = null):void{

                var width:int = img.parent.width - img.width*_imgScale;

                var height:int = img.parent.height - img.height*_imgScale;

                img.startDrag(false, new Rectangle(0, 0 , width, height));

            }

             

            /**

             * 鼠标弹起停止 拖动

             */

            private function itemMouseUp(event:MouseEvent):void{

                img.stopDrag();

            }

             

            /**

             * 鼠标滚轮控制缩放

             */

            private function itemMouseWheel(event:MouseEvent):void{

                //计算每次的缩放比例

                _imgScale = this.img.scaleX + (Math.abs(event.delta)/event.delta)*0.05;

                //设置最大最小的缩放限度

                _imgScale = Math.min(1,_imgScale); 

                var minScale:Number = Math.min(img.parent.width/img.width,img.parent.height/img.height);

                _imgScale = Math.max(minScale,_imgScale);

                 

                //计算缩放后图片的坐标(保证缩放中心是鼠标)

                var oldScale:Number = this.img.scaleX;             

                _imgX = this.img.x-(_imgScale/oldScale-1)*(this.img.parent.mouseX - this.img.x);

                _imgY = this.img.y-(_imgScale/oldScale-1)*(this.img.parent.mouseY - this.img.y);

                 

                //坐标修正

                if(img.width*_imgScale >= img.parent.width){

                    if(_imgX>=0){

                        _imgX=0;

                    }else if((img.width*_imgScale+_imgX)<img.parent.width){

                        _imgX=img.parent.width-img.width*_imgScale;

                    }

                }

                 

                if(img.height*_imgScale >= img.parent.height){

                    if(_imgY>=0){

                        _imgY=0;

                    }else if((img.height*_imgScale+_imgY)<img.parent.height){

                        _imgY=img.parent.height-img.height*_imgScale;

                    }

                }      

                 

                //设置图片缩放比例和坐标

                this.img.scaleX=_imgScale;

                this.img.scaleY=_imgScale;

                this.img.x = _imgX;

                this.img.y = _imgY;    

            }

 

        ]]>

    </fx:Script>

 

    <s:Group clipAndEnableScrolling="true" width="70%" height="70%"

             horizontalCenter="0" verticalCenter="0">

        <s:Rect  width="100%" height="100%">

            <s:fill>

                <s:SolidColor color="0xffffff"/>

            </s:fill>

        </s:Rect>

        <s:Image id="img" source="img.jpg"/>

    </s:Group>

</s:Application>

                                                        
        
                            <?xml:namespace prefix="s">                        
    
                                   ?xml:namespace> >                        

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索代码
用户
canvas图片拖拽缩放、可拖拽移动缩放的svg、jquery拖拽缩放插件、html5 图片缩放 拖拽、js旋转缩放拖拽,以便于您获取更多的相关知识。

时间: 2024-08-02 01:54:35

Flex4图片在指定区域内自由拖拽移动,缩放图片大小例子的相关文章

简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器_javascript技巧

简单漂亮的js弹窗 - 自由拖拽 复制代码 代码如下: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>简单漂亮的js弹窗 - 自由

html5 canvas上有多个图片元素,如何实现每个图片能用鼠标拖拽移动?或是有其他的方法= =

问题描述 html5 canvas上有多个图片元素,如何实现每个图片能用鼠标拖拽移动?或是有其他的方法= = 像上图所示,图片都放在canvas上,要实现像装扮类游戏可以拖拽图片 var hair2 = new Image(); hair2.src = ""头发2.png""; hair2.onload = function(){ canv.drawImage(hair2660130171190); };画布和图片是按照上述方法贴上去的.求指点,谢谢么么哒~ 解决方

VmWare Tools 简介(鼠标自由切换、文件自由拖拽)

VMware Tools是VMware虚拟机中自带的一种增强工具,相当于VirtualBox中的增强功能(Sun VirtualBox Guest Additions),是VMware提供的增强虚拟显卡和硬盘性能.以及同步虚拟机与主机时钟的驱动程序. 只有在VMware虚拟机中安装好了VMware Tools,才能实现主机与虚拟机之间的文件共享,同时可支持自由拖拽的功能,鼠标也可在虚拟机与主机之前自由移动(不用再按ctrl+alt),且虚拟机屏幕也可实现全屏化. VMware Tools专栏提供

jQuery使用drag效果实现自由拖拽div_jquery

偶然间看到了以前做的一个简洁的div拖拽效果,修改了一下加点注释,经测试完美通过firefox/chrome/ie6-11,现拿来分享一下. 先说一下实现原理及要点,最主要的有三步.第一步是mousedown事件,鼠标mousedown的时候记录此时的鼠标X轴和Y轴以及拖拽框的left和top,并且给拖拽标记赋值true,代表拖拽动作就绪.第二步是mousemove事件,此时动态获取鼠标的X轴和Y轴,然后计算出来拖拽框新的left和top并赋值使其实现拖拽效果.第三步是mouseup事件,鼠标弹

jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法_jquery

本文实例讲述了jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法.分享给大家供大家参考.具体如下: 这里介绍jQuery图片左右拖拽特效,无滚动条,将多张图片组合在一起形成的效果,插件使用的是jquery.nicescroll.js,拖动过程中不会出现滚动条,这样更美观了一些,若需要此效果,可参见下边框中的代码. 运行效果截图如下: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona

jquery利用拖拽方式在图片上添加热链接_jquery

本文实例讲述了jquery利用拖拽方式在图片上添加热链接的实现过程,分享给大家供大家参考.具体如下: 运行效果截图如下: 项目的需求,要在一张图片上加不同的链接,比如说,图片是一个套房,里面有沙发,茶几,酒柜,电视柜等,然后在这些物件上加一个超链接,点击后打开相关产品的介绍. 用jquery写了一个在图片添加锚点的功能,实现的原理:一个文本框写入标题,一个文本框写链接,一个添加按钮,一个编辑按钮,当写好内容后点击添中添加,便会在图片的上方出现一个P标签,然后按着鼠标左键拖拽该标签放到相应的地方松

JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)_javascript技巧

本文实例讲述了JS实现漂亮的窗口拖拽效果.分享给大家供大家参考.具体如下: 这是一款漂亮的JS窗口拖拽效果(改变大小/最小化/最大化/还原/关闭) 特点: ① 窗口可以拖动: ② 窗口可以通过八个方向改变大小: ③ 窗口可以最小化.最大化.还原.关闭: ④ 限制窗口最小宽度/高度. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-win-drug-cha-close-demo/ 具体代码如下: <!DOCTYPE html PUBLIC &qu

android 大图片拖拽并缩放实现原理

由于最近项目忙,博客一直没有时间更新,今天有点时间就连续更新两篇吧,过过瘾. 这篇图片拖拽缩放也是我在项目中用到的,今天整理一下,将源码奉献给大家,希望对大家以后碰到相似的问题有帮助. 这篇就不做过多介绍了,直接上源码:复制代码 代码如下:public class SpacePageActivity extends Activity { private LinearLayout linnerLayout_spacepage; private RelativeLayout relativeLayo

Java小例子:创建一个可拖拽图片的面板

今天在论坛上看到帖子希望能在 Swing 中实现像拖地图一样拖拽图片.这里是一个最 简单的实现,提供了一个基本思路. import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.M