zoukankan      html  css  js  c++  java
  • Raphael的拖动处理

    Raphael的拖动处理:

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <%
        String path = request.getContextPath();
        String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + path + "/";
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <base href="<%=basePath%>">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-1.11.1.js"></script>
    <script type="text/javascript" src="js/raphael.js"></script>
    <script type="text/javascript" src="js/index011.js"></script>
    </head>
    <body>
    <div id="container1"></div>
    <div id="container2"></div>
    <div id="container3"></div>
    <div id="container4"></div>
    </body>
    </html>
    $(function() {
        // 第一种拖动方式;
        initRaphael();
        // 第二种拖动方式;
        initRaphael2();
        // 多个transform没有累加效果,只有最后一个有效;
        initRaphael3();
        // 拖拽集合情况;
        initRaphael4();
    });
    function initRaphael(e) {
        // 第二种初始化Raphael的方式;
        var paper = Raphael('container1', 500, 500);
        var circle = paper.circle(120, 110, 25).attr('fill', 'yellow');
        circle.drag(dragmove, dragstart, dragend);
        // dx,dy是移动的增量,增量都是相对开始位置计算的,x,y是移动到的位置;
        function dragmove(dx, dy, x, y, e) {
            // 这样的拖拽只能是有cx,cy属性的才可以拖动;
            this.attr({
                cx : x,
                cy : y
            });
            console.log("dx:" + dx);
            console.log("dy:" + dy);
            console.log("x:" + x);
            console.log("y:" + y);
        }
        // 默认情况还是有5个参数的;arguments.length=5;
        function dragmove1(e) {
            console.log(arguments.length);
            console.log('0:' + arguments[0]);
            console.log('1:' + arguments[1]);
            console.log('2:' + arguments[2]);
            console.log('3:' + arguments[3]);
            console.log('4:' + arguments[4]);
        }
        function dragstart(x, y, e) {
            this.attr('fill', 'orange');
        }
        function dragend(e) {
            this.attr('fill', 'yellow');
        }
    }
    function initRaphael2(e) {
        // 在不同的div中设置svg对象;
        var paper = new Raphael('container2', 500, 500);
        var circle = paper.circle(120, 110, 25).attr('fill', 'yellow');
        circle.drag(dragmove, dragstart, dragend);
        function dragstart(x, y, e) {
            this.current_transform = this.transform();
            console.log('start transform::' + this.current_transform);
            this.attr('fill', 'orange');
        }
        function dragmove(dx, dy, x, y, e) {
            // 使用transform进行属性设置;
            console.log('move transform::' + this.current_transform + 'T' + dx + ',' + dy);
            this.transform(this.current_transform + 'T' + dx + ',' + dy);
        }
        function dragend(e) {
            this.current_transform = this.transform();
            console.log('end transform::' + this.current_transform);
            this.attr('fill', 'yellow');
        }
    }
    function initRaphael3(e) {
        var paper = new Raphael('container3', 500, 500);
        // 多个transform,移动的距离不会进行积累,会按照最后一个的数据进行移动
        paper.ellipse(300, 200, 50, 20).attr('fill', 'green').transform('T5000,1000').transform('T50,10');
    }
    function initRaphael4(e) {
        var paper = new Raphael('container4', 500, 500);
        var dice = paper.set();
        dice.push(paper.rect(10, 10, 60, 60, 4).attr('fill', '#FFF'));
        dice.push(paper.circle(22, 58, 5).attr('fill', '#000'));
        dice.push(paper.circle(58, 22, 5).attr('fill', '#000'));
        dice.push(paper.circle(40, 40, 5).attr('fill', '#000'));
        dice.push(paper.circle(22, 22, 5).attr('fill', '#000'));
        dice.push(paper.circle(58, 59, 5).attr('fill', '#000'));
        dice.data('myset', dice);
        // 集合拖拽情况;
        dice.drag(function(dx, dy, x, y, e) {
            var myset = this.data('myset');
            myset.transform(this.data('mytransform') + 'T' + dx + ',' + dy);
            // 用下面这样的方式也可以进行;
            // dice.transform(this.data('mytransform')+'T'+dx+','+dy);
        }, function(x, y, e) {
            var myset = this.data('myset');
            myset.data('mytransform', this.transform());
            // 用下面这样的方式也可以进行;
            // dice.data('mytransform',this.transform());
        }, function(e) {
            var myset = this.data('myset');
            myset.data('mytransform', this.transform())
            // 用下面这样的方式也可以进行;
            // dice.data('mytransform',this.transform());
        });
    }
  • 相关阅读:
    常用数据验证
    js regx验证==== 正则
    sql单列合并
    msdn的网址 sql相关
    Json城市列表
    Ubuntu安装SSH服务器故障分析及解决办法(错误1:E:软件包 openssh-server 还没有可供安装的候选者,错误2:E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系)
    小样儿老师:我的嵌入式学习之路(一)
    J
    归并排序的相关用法
    I
  • 原文地址:https://www.cnblogs.com/stono/p/5108631.html
Copyright © 2011-2022 走看看