• KineticJS教程(6)


    KineticJS教程(6)

     6.拖拽

    6.1.拖拽功能

    要实现Kinetic对象的拖拽功能很简单,只需将图形对象的draggable属性设为true就可以了。

    <script>

    // 在构造方法中的config参数设置

    var shape = new Kinetic.Circle({

    draggable: true;

    });

     

    // 用图形对象的方法设置

    shape.draggable(true);

    </script>

    这种拖拽功能还可以应用到组(Group)、层(Layer)和舞台(Stage),设置方法类似。不过要注意的是,应用到组或层上时,拖拽组或层上的任一对象,整个组或层都会移动,而对于舞台,拖拽舞台上任何位置都能移动整个舞台,而无需拖拽舞台上的图形对象。

    6.2.拖拽线条

    线条(Line)的拖拽功能设定与其他类型图形类似,只是线条需要用像素检测功能,因此需要线条所在层添加到舞台后执行一次saveData方法,在拖拽动作结束事件处理方法中也要执行一次saveData方法。

    <script>

    // 在构造方法中的config中设定

    var line= new Kinetic.Line({

     

    draggable: true;

    });

     

    // 使用对象的方法设定

    line.draggable(true);

     

    // 保存像素数据

    line.saveData();

    //必须在每次拖拽完毕后执行一次saveData

    line.on(“dragend”, function() {

    blueLine.saveData();

    });

    </script>

    完整代码:

    <!DOCTYPE HTML>

    <html>

    <head>

    <meta charset=“UTF-8″>

    <title>KineticJS</title>

    <script src=“../kinetic.js”></script>

    </head>

    <body>

    <script>

    window.onload = function() {

    var stage = new Kinetic.Stage({

    container : “container”,

    width : 600,

    height : 400

    });

     

    var layer = new Kinetic.Layer();

     

    var line = new Kinetic.Line({

    points : [ 100, 150, 340, 230 ],

    stroke : “blue”,

    strokeWidth : 10,

    draggable : true

    });

     

    layer.add(line);

    stage.add(layer);

     

    //保存像素数据

    line.saveData();

     

    //必须在每次拖拽完毕后执行一次saveData

    line.on(“dragend”, function() {

    blueLine.saveData();

    });

    };

    </script>

    <div id=“container”></div>

    </body>

    </html>

    6.3.拖拽事件

    有关拖拽的事件包括拖拽开始dragstart,拖拽中 dragmove,拖拽结束 dragend ,我们可以根据自己的需要绑定这几个事件响应方法。

    <script>

    shape.on(“dragstart”, function(evt) {

    // 响应代码

    };

    shape.on(“dragmove”, function(evt) {

    // 响应代码

    };

    shape.on(“dragend”, function(evt) {

    // 响应代码

    };

    </script>

    6.4.拖拽方向限制

    Kinetic支持对拖拽运动限制在水平或者垂直方向上,这个功能通过对象的 dragConstraint属性进行设置来实现。 dragConstraint属性可以有三个选项,包括 nonehorizontalvertical,默认情况下这个属性的值是none

    <script>

    // 在构造方法中的config参数中设置,拖动被限制在水平方向上

    var shape = new Kinetic.Rect({

    dragConstraint: “horizontal”

    });

     

    // 用对象的方法设置,拖动被限制在水平方向上

    shape.setDragConstraint(“horizontal”);

    </script>

    6.5.拖拽范围限制

    Kinetic通过 dragBounds 属性的设置可以将拖拽限制在一个矩形范围之内。dragBounds 属性包括toprightbottom, 和 left 四个参数,这四个参数可以只设置其中的几个,不需要全部设置。

    <script>

    // 在构造方法的config参数中设置

    var shape = new Kinetic.Circle({

    dragBounds: {

    top: 50

    }

    });

     

    // 在对象的方法中设置

    shape.setDragBounds({

    top: 0,

    left: 0,

    right: 200,

    bottom: 200

    });

    </script>

  • 相关阅读:
    枚举类型的应用
    动手动脑
    四则运算和验证码--源码
    ATM源码
    javabean+jsp+servlet+jdbc
    四则运算改良
    Java异常
    课后总结
    包装类Integre
    对象验证
  • 原文地址:https://www.cnblogs.com/zhangleblog/p/3912181.html
Copyright © 2020-2023  润新知