KineticJS / Javascript 动态创建和立即拖动

Posted

技术标签:

【中文标题】KineticJS / Javascript 动态创建和立即拖动【英文标题】:KineticJS / Javascript dynamic creation and immediate dragging 【发布时间】:2012-12-03 13:02:56 【问题描述】:

我想要做的是在 mousedown 上动态创建一个形状,然后立即让它(形状)跟随鼠标光标,直到 mouseup 将其设置到位。 这是我到目前为止所拥有的,但它对我不起作用。

addNegativeButton.on('mousedown', function()
     var userPos = stage.getUserPosition();
     shapesLayer.add(new Kinetic.Image(
          image: imageObj,
          x: userPos.x,
          y: userPos.y,
          height: 25,
          width: 25,
          rotation: 1,                      
          draggable: true,
          offset: 12
));

var last = shapesLayer.getChildren()[shapesLayer.getChildren().length -1];
stage.on("mouseup", function()
    last.setAbsolutePosition(stage.getUserPosition());  
    stage.off("mouseup");
);

重申: 我拥有的是一个“addNegativeButton”,单击它会创建一个形状。 但我希望它跟随鼠标光标,直到点击被释放。

http://jsfiddle.net/CPrEe/37/ 有什么建议吗?

【问题讨论】:

用你目前拥有的东西制作一个示例 jsfiddle,我可能会尝试一下。 jsfiddle.net/CPrEe/37 【参考方案1】:

原来它相当简单;) 添加元素/形状后,您所要做的就是使用模拟功能来模拟鼠标向下拖动......

var stage = new Kinetic.Stage(
    container: 'container',
    width: 578,
    height: 200
);

var layer = new Kinetic.Layer();

var rect = new Kinetic.Rect(
    x: 20,
    y: 20,
    width: 100,
    height: 50,
    fill: 'green',
    stroke: 'black',
    strokeWidth: 4
);
//What I really want here is to start dragging the circle until the 
//user releases the mouse, which would then place the circle.
rect.on('mousedown', function(evt) 

    var userPos = stage.getUserPosition();
    var latestElement = new Kinetic.Circle(
        x: userPos.x,
        y: userPos.y,
        radius: 20,
        fill: 'red',
        stroke: 'black',
        strokeWidth: 4,
        draggable: true
    )

    layer.add(latestElement);

    // Here's the bit you want.  After adding the circle (with draggable:true) simulate the mousedown event on it which will initiate the drag
    latestElement.simulate('mousedown');

    layer.draw();
);

layer.add(rect);

stage.add(layer);​

http://jsfiddle.net/CPrEe/38/http://kineticjs.com/docs/symbols/Kinetic.Node.php#simulate

【讨论】:

谢谢,这正是我所需要的。我最近正在阅读模拟,但不知道如何使用它。

以上是关于KineticJS / Javascript 动态创建和立即拖动的主要内容,如果未能解决你的问题,请参考以下文章

在 KineticJS 中按类名从阶段获取多个对象

使用 HTML5 Canvas 和 KineticJS 在 Android Webview 上平移、缩放性能不佳

KineticJS:如何缩放舞台?

在 KineticJS 4.7.2 上使用 globalcompositeoperations

KineticJS:禁用拖动

KineticJS 和捏和缩放