touch 的图片缩放 拖拽

var cat = window.cat || {};
cat.touchjs = {
    left: 0,
    top: 0,
    scaleVal: 1,    //缩放
    rotateVal: 0,   //旋转
    curStatus: 0,   //记录当前手势的状态, 0:拖动, 1:缩放, 2:旋转
    //初始化
    init: function ($targetObj, callback) {
        touch.on($targetObj, ‘touchstart‘, function (ev) {
            cat.touchjs.curStatus = 0;
            ev.preventDefault();//阻止默认事件
        });
        if (!window.localStorage.cat_touchjs_data)
            callback(0, 0, 1, 0);
        else {
            var jsonObj = JSON.parse(window.localStorage.cat_touchjs_data);
            cat.touchjs.left = parseFloat(jsonObj.left), cat.touchjs.top = parseFloat(jsonObj.top), cat.touchjs.scaleVal = parseFloat(jsonObj.scale), cat.touchjs.rotateVal = parseFloat(jsonObj.rotate);
            callback(cat.touchjs.left, cat.touchjs.top, cat.touchjs.scaleVal, cat.touchjs.rotateVal);
        }
    },
    //拖动
    drag: function ($targetObj, callback) {
        touch.on($targetObj, ‘drag‘, function (ev) {
            $targetObj.css("left", cat.touchjs.left + ev.x).css("top", cat.touchjs.top + ev.y);
        });
        touch.on($targetObj, ‘dragend‘, function (ev) {
            cat.touchjs.left = cat.touchjs.left + ev.x;
            cat.touchjs.top = cat.touchjs.top + ev.y;
            callback(cat.touchjs.left, cat.touchjs.top);
        });
    },
    //缩放
    scale: function ($targetObj, callback) {
        var initialScale = cat.touchjs.scaleVal || 1;
        var currentScale;
        touch.on($targetObj, ‘pinch‘, function (ev) {
            if (cat.touchjs.curStatus == 2) {
                return;
            }
            cat.touchjs.curStatus = 1;
            currentScale = ev.scale - 1;
            currentScale = initialScale + currentScale;
            cat.touchjs.scaleVal = currentScale;
            var transformStyle = ‘scale(‘ + cat.touchjs.scaleVal + ‘) rotate(‘ + cat.touchjs.rotateVal + ‘deg)‘;
            $targetObj.css("transform", transformStyle).css("-webkit-transform", transformStyle);
            callback(cat.touchjs.scaleVal);
        });  

        touch.on($targetObj, ‘pinchend‘, function (ev) {
            if (cat.touchjs.curStatus == 2) {
                return;
            }
            initialScale = currentScale;
            cat.touchjs.scaleVal = currentScale;
            callback(cat.touchjs.scaleVal);
        });
    },
    //旋转
    rotate: function ($targetObj, callback) {
        var angle = cat.touchjs.rotateVal || 0;
        touch.on($targetObj, ‘rotate‘, function (ev) {
            if (cat.touchjs.curStatus == 1) {
                return;
            }
            cat.touchjs.curStatus = 2;
            var totalAngle = angle + ev.rotation;
            if (ev.fingerStatus === ‘end‘) {
                angle = angle + ev.rotation;
            }
            cat.touchjs.rotateVal = totalAngle;
            var transformStyle = ‘scale(‘ + cat.touchjs.scaleVal + ‘) rotate(‘ + cat.touchjs.rotateVal + ‘deg)‘;
            $targetObj.css("transform", transformStyle).css("-webkit-transform", transformStyle);
            $targetObj.attr(‘data-rotate‘, cat.touchjs.rotateVal);
            callback(cat.touchjs.rotateVal);
        });
    }
};  
<div style="position:relative;width: 100%;height: 250px;overflow: hidden;border: 1px dashed #ff0000;">
  <img id="targetObj" style="position:relative;transform-origin:center" src="http://demo.somethingwhat.com/images/flower1.jpg" />
</div> 
var $targetObj = $(‘#targetObj‘);
//初始化设置
cat.touchjs.init($targetObj, function (left, top, scale, rotate) {});
//初始化拖动手势(不需要就注释掉)
cat.touchjs.drag($targetObj, function (left, top) { });
//初始化缩放手势(不需要就注释掉)
cat.touchjs.scale($targetObj, function (scale) { });
//初始化旋转手势(不需要就注释掉)
cat.touchjs.rotate($targetObj, function (rotate) { });  
 
时间: 2024-08-09 14:35:12

touch 的图片缩放 拖拽的相关文章

Android图片的拖拽与缩放

Android图片的拖拽与缩放 2014年5月9日 我们在使用应用当中经常需要浏览图片,比如在微信当中,点击图片之后可以对图片进行缩放. 本博客介绍如何对图片进行拖拽和缩放,这首先要了解Android中的触摸机制了,在屏幕中有手指按下.手指抬起.手指移动还有多个手指触摸的动作.我们要实现对图片的拖拽和缩放就是要基于这些动作来进行逻辑处理. 图片的拖拽主要是计算手指开始的位置与当前手指的位置关系,来进行平移的,具体可以看代码. 图片的缩放就涉及到计算两点之间的距离来得到缩放比,调用矩阵方法来达到缩

Ant Design -- 图片可拖拽效果,图片跟随鼠标移动

Ant Design 图片可拖拽效果,图片跟随鼠标移动,需计算鼠标在图片中与图片左上角的X轴的距离和鼠标在图片中与图片左上角的Y轴的距离. constructor(props) { super(props); this.dragDrop = false; // 图片是否被拖动中 this.apartX = 0; // 鼠标在图片中与图片左上角的X轴的距离 this.apartY = 0; //鼠标在图片中与图片左上角的Y轴的距离 this.state = { value: 1, previewV

自定义视图之————安卓图库缩放拖拽的完整实现

加了大部分注释,看注释应该可以明白基本的思路.欢迎大神留言拍砖,此文适合小白观看. package com.example.imagedeal; import android.content.Context; import android.graphics.Matrix; import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.util.AttributeSet; impor

手机端touch事件实现元素拖拽效果 2

经上次的手机端拖拽事件,再次经过完善修改,加入了元素不能拖出屏幕范围功能,并做了一个小的函数接口 ps:经落雨大神指点. 代码如下: var touchEvent = (function(){ var oDiv = document.getElementsByTagName('div')[0], //获取可拖动元素 oIpt = document.getElementsByTagName('input')[0], //记录拖动元素位置 oIpt1 = document.getElementsBy

android 实现图片选择拖拽控件

1.使用RecyclerView 使用RecyclerView可以轻松实现图片切换时的动画过程,这点要好于GridView. 2. 拖拽的实现 Dragmanager 继承View.OnDragListener,对拖拽过程中进行操作, Action_drag_started 获取到操作的Item Action_Drag_location 根据每个停留的位置判断是否交换item的位置. Action_Drag_ended 跟新位置 DragSortAdapter 抽象类,为recyclerView

关于处理禁止图片默认拖拽行为动作

这样子我鼠标移动的时候,没有触发onmousemove事件绑定的函数.操作起来很别扭..后来自己整理了一下..一共有三个办法可以解决这个问题..具体哪个办法更优,现在还不清楚.以后有能力判断优劣的时候再判断吧 1.document.images[i].ondragstart=function (){return false;}; 直接循环页面所有的img标签..然后把它的ondragstart事件return false:这样子就禁止了浏览器图片的默认拖拽动作了.感觉这里要遍历所有IMG标签..

关于Unity中UGUI 图片实现拖拽功能

应用方法:将下面脚本挂载在需要拖拽功能的UI图片上即可 两种拖拽选择:A.中心拖拽(图片中心跟随鼠标位置)m_isPrecision为false: B.精准拖拽(图片被鼠标点击的位置跟随鼠标位置)m_isPrecision为true: 1 /************************************************* 2 * 项目名称:UGUI通用 3 * 脚本创建人:魔卡 4 * 脚本创建时间:2017.12.14 5 * 脚本功能:UI图片拖拽功能(将脚本挂载在需要拖放

利用HTML5实现图片的拖拽

设置元素为可拖放 首先,为了使元素可拖动,把 draggable 属性设置为 true : <img draggable="true" /> 拖动什么 - ondragstart 和 setData() ondragstart 拖拽开始是触发事件,当元素被拖动时,会发生什么.我们命名一个函数叫drag(),当拖拽事件触发时,我们执行以下函数: function drag(ev) { ev.dataTransfer.setData("Text",ev.ta

H5图片异步拖拽上传

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> #div1{width: 200px; height: 200px; background: red; margin: 50px;} </style> <script src=&qu