项目需求:

在web端实现图片浏览,具有放大、缩小、滚轴放大缩小、移动、旋转以及范围控制。

成果图:

核心代码:

1、放大:此处放大是点击按钮,按1.5倍高宽进行放大。

                img.width = img.width *1.5;
                img.height = img.height *1.5;

2、缩小:此处缩小是点击按钮,按0.5倍高宽进行缩小。
                img.width = img.width *0.5;
                img.height = img.height *0.5;

3、旋转:此处旋转是按顺时针旋转90度。
                img.rotation = img.rotation - 90;

4、滚轴放大缩小:

--先添加滚轴监听

systemManager.addEventListener(MouseEvent.MOUSE_WHEEL, doMouseWheel);

--判断当滚轴向前或向后移动时,作出相应反应
            private function doMouseWheel(evt:MouseEvent):void
            {

                //滚轴向前,放大图片
                if(evt.delta > 0)
                {
                    img.width = img.width *1.5;
                    img.height = img.height *1.5;
                }
                else
                {
                    img.width = img.width * 0.5;
                    img.height = img.height * 0.5;                    
                }
            }

5、移动:图片查看最难的在于移动时的范围控制(不让图片超过图片查看窗口)

--首先添加鼠标按下、弹起的监听事件
            private function pan():void
            {
                img.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDowns);
                img.addEventListener(MouseEvent.MOUSE_UP,onMouseUps);        
            }   

--鼠标按下、弹起响应事件(并设定范围)
            private function onMouseDowns(evt:MouseEvent):void
            {                

                //拖拽事件,在600*400的矩形范围内拖拽
                evt.currentTarget.startDrag(false,new Rectangle(0,0,600-img.width,400-img.height));
                evt.currentTarget.addEventListener(MouseEvent.MOUSE_UP,onMouseUps);
            }
            private function onMouseUps(evt:MouseEvent):void

            { 
                evt.currentTarget.stopDrag();
                evt.currentTarget.removeEventListener(MouseEvent.MOUSE_UP,onMouseUps);
            }    

--在施行这样的方法时,会出现一个bug,即鼠标按下拖拽的时候,当鼠标超出窗体时(可能是失去焦点了),即使鼠标弹起也不会触发MouseUp事件

--所以,添加一个监听,超出窗体则不执行拖拽了
            protected function bdImg_mouseOutHandler(event:MouseEvent):void
            {
                this.stopDrag();
            }

PS:需要在装image的容器外添加上Scroller ,目的是切割图片,防止图片显示超过容器部分。

<s:Scroller id="sc">
                <s:Group id="gp" height="100%" width="100%">
                    <s:Image id="img"
                                  horizontalCenter="0"
                                  verticalCenter="0"/>                
                </s:Group>            
            </s:Scroller>

Flex实现web版图片查看器的更多相关文章

  1. IIS事件查看器_WebServer事件查看器_帮助查看IIS-Web服务器事件执行日志

    IIS服务器是我们常用的Web站点部署工具,而我们有时可能遇到IIS服务器的应用程序池莫名其妙的关闭了,或者是其他未知原因等等,我们这是可以通过微软提供的WebServer(Web服务事件查看器),来 ...

  2. Win10默认图片查看器更改

    Win10自带的图片查看器不是很习惯,其背景乌漆嘛黑,宽扁的额头让人想起了黑边火腿肠手机,无法直视.怀念Win7和Win8.1的图片查看器,一个鼠标滚轮缩放自如的酸爽感觉.但却遗憾地发现,并不能直观地 ...

  3. Asp.Net Core写个共享磁盘文件Web查看器

    本篇和大家分享的是一个磁盘文件查看系统,严格来说是使用NetCore写的一个Web系统应用,由于NetCore跨平台特性,我生成了exe的运行包,只需要配置运行电脑ip+端口,即可在浏览器中通过IP+ ...

  4. 在web项目中集成pdf.js的默认查看器

    pdf.jsMozilla开源的一项用于在HTML5平台上显示pdf文档的技术,Mozilla自己的Firefox浏览器也用了pdf.js来预览pdf,可见应该是一个比较成熟稳定的方案(btw,chr ...

  5. OLE/COM 对象查看器 & OLE常用术语

    "OLE/COM Object Viewer"(OLE/COM 对象查看器)查看你系统上安装的所有 COM 对象时,是一个非常便利的工具. 它是 Windows 2000 资源套件 ...

  6. 用Qt写软件系列一:QCacheViewer(浏览器缓存查看器)

    介绍 Cache技术广泛应用于计算机行业的软硬件领域.该技术既是人们对新技术探讨的结果,也是对当前软硬件计算能力的一种妥协.在浏览器中使用cache技术,可以大幅度提高web页面的响应速度,降低数据传 ...

  7. python实现web分页日志查看

    当我们维护一个网站时,无论前台还是后台,经常会出现各种个样的问题.有时候问题很难直观的发现,这个时候只能查看各种日志来跟踪问题.但是查看日志有各种个样的问题.首先,要用各种工具登陆到服务器,这个有时候 ...

  8. 使用chrome控制台作为日志查看器

    很多时候,我们需要查看日志的实时输出,这个时候往往只能选择控制台.我这里的日志框架是serilog,它有一个好处是控制台输出时可以高亮的形式显示其参数结构信息,如下图所示 但也存在许多不方便的地方: ...

  9. Java Log Viewer日志查看器

    工欲善其事必先利其器 在投奔怒海--一个Domino老程序猿眼里的Java开发我提到眼下所做的Java开发中遇到的大量日志之问题. server控制台刷屏似地滚动,日志文件飞快地增长,debug的时候 ...

随机推荐

  1. 由浅入深:Python 中如何实现自动导入缺失的库?

    在写 Python 项目的时候,我们可能经常会遇到导入模块失败的错误:ImportError: No module named 'xxx' 或者 ModuleNotFoundError: No mod ...

  2. 深度讲解Linux内存管理和Linux进程调度-打通任督二脉

    我在多年的工程生涯中发现很多工程师碰到一个共性的问题:Linux工程师很多,甚至有很多有多年工作经验,但是对一些关键概念的理解非常模糊,比如不理解CPU.内存资源等的真正分布,具体的工作机制,这使得他 ...

  3. 2019.10.29 CSP%您赛第四场t2

    我太菜了我竟然不会分层图最短路 ____________________________________________________________________________________ ...

  4. git 的一些指令

    作为一个前端,git的各种指令应该是需要掌握的,因为前一段时间遇到了一些问题,总觉得每次遇到点问题都去百度这样总归不大好,还是记录一下比较常见的一些指令吧.以后遇到新的再继续添加. 1. 新建本地分支 ...

  5. css伪类选择器的查找顺序

    当伪类选择器last-child.first-child无效时,就是因为不了解css伪类选择器的查找顺序造成选中某一元素失败. 先给出一段dom <body> <div>第一个 ...

  6. 虚拟环境:virtualenv与virtualenvwrapper

    前言: 在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的 ...

  7. MySQL学习之路(1):SQL脚本语言

    使用MySQL数据库,首先安装MySQL数据库,本文所有SQL脚本在MySQL上测试和执行. 安装Mysql服务器:安装Mysql workbench客户端,可以以图形化界面管理mysql:安装php ...

  8. js如何展示上传的图片

    前言:本文章主要讲的是上传的图片如何展示在页面上. 一般来说,我们会先将本地图片上传到服务器,上传成功后,由后台返回图片的网络地址再在前端显示.但是,我今天讲的是不通过前面说的过程,而是直接使用js将 ...

  9. Elastic search集群新增节点(同一个集群,同一台物理机,基于ES 7.4)

    一开始,在电脑上同一个集群新增节点(node)怎么试也不成功,官网guide又语焉不详?集群健康值yellow(表示主分片全部可用,部分复制分片不可用) 最后,在stackoverflow上找到了答案 ...

  10. 学习笔记29_MVC异步上传图片

    前台 <script type="text/javastript"> $(fuction(){ $("#btnsub").click(fuction ...