• 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());
        });
    }
  • 相关阅读:
    开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!
    表格存储TableStore2.0重磅发布,提供更强大数据管理能力
    配置管理 ACM 在高可用服务 AHAS 流控降级组件中的应用场景
    利用栈将中缀表达式转换为后缀表达式并进行计算
    利用栈将中缀表达式转换为后缀表达式并进行计算
    Matlab学习点滴
    Matlab学习点滴
    Matlab学习点滴
    栈的基本应用_将字符串逆序输出
    栈的基本应用_将字符串逆序输出
  • 原文地址:https://www.cnblogs.com/stono/p/5108631.html
Copyright © 2020-2023  润新知