【问题标题】:Create a masked overlay with draggable/resizable underneath创建一个带有可拖动/可调整大小的蒙版叠加层
【发布时间】:2013-02-22 20:17:51
【问题描述】:

我正在尝试降低 kineticjs 并开发了一个小应用程序,使我的图像可拖动和调整大小。到目前为止一切顺利;

但是:我想要一个在中心具有可变高度/宽度块的叠加层,它应该显示下面的图像(具有可拖动/可调整大小的完整)和半透明叠加层。

我希望在叠加层完好无损的情况下仍能在叠加层后面调整大小/拖动(像这样,但使用 kineticjs:http://envyum.nl/pointer/

有没有办法做到这一点?也许通过从重叠的矩形中切出一个块?并且鼠标可以忽略css3中pointer-events: nonecan等覆盖吗?

提前致谢,

【问题讨论】:

  • 你能发布一些你在工作 jsfiddle 中的代码吗?这样其他人(比如我)可以通过添加一些代码来帮助你更多
  • 似乎实现“叠加”的最简单方法是创建一个具有四个半透明矩形的新层,这些矩形不监听任何事件,以便您可以将图像拖到它后面。

标签: javascript html html5-canvas kineticjs


【解决方案1】:

我有一个我在上面的 cmets 中谈论的示例:http://jsfiddle.net/KwQBB/

这不需要新层,但这样做可能是个好习惯。

您可以根据需要定制逻辑,尤其是模拟“剪切”

  var stage = new Kinetic.Stage({
    container: 'container',
    width: 578,
    height: 500
  });
  var layer = new Kinetic.Layer();

  var pentagon = new Kinetic.RegularPolygon({
    x: stage.getWidth() / 2,
    y: stage.getHeight() / 2,
    sides: 5,
    radius: 70,
    fill: 'red',
    stroke: 'black',
    strokeWidth: 4,
    draggable: true,
    dragOnTop: false
  });
  var rect1 = new Kinetic.Rect({  // overlay
    x: 0,
    y: 0, 
    width: stage.getWidth(),
    height: 100,
    fill: 'gray',
    opacity: 0.5,
    listening: false     // <------ Extremely important
  });
  var rect2 = new Kinetic.Rect({ // overlay
    x: 0,
    y: stage.getHeight()/2, 
    width: stage.getWidth(),
    height: 100,
    fill: 'gray',
    opacity: 0.5,
    listening: false     // <------ Extremely important
  });

  // add the shape to the layer
  layer.add(pentagon);
  layer.add(rect1);
  layer.add(rect2);   // add more rectangles to complete overlay

  // add the layer to the stage
  stage.add(layer);

【讨论】:

  • 我试过矩形的东西。但由于它是一个 100% 的宽度和高度的东西,它有时会在我无法正确纠正之间留下难看的白线。尽管如此;看到你的例子让我想再试一次!感谢您到目前为止帮助我!
  • 并完成了尝试:envyum.nl/pointer 如您所见,如果您拖动,图像会位于叠加层的顶部。你能检查一下我的JS,看看你能不能发现一些异常? (因为这是我第一次使用画布和动力学)envyum.nl/pointer/javascript/fertile_imager3.js
  • 好吧,我显然是个白痴。我忘记了图像上的“DragOnTop”。感谢您帮助我!
猜你喜欢
  • 1970-01-01
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
  • 2015-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
相关资源
最近更新 更多