gpt4 book ai didi

javascript - 从空白区域拖动 Konva 图层

转载 作者:行者123 更新时间:2023-12-03 00:45:22 30 4
gpt4 key购买 nike

我想拖动 Konva 图层,即使它是空的。我发现我只能拖动对象所在的图层(代码显示您可以拖动矩形所在的位置,但不能拖动其他位置)。

如何拖动图层拖动空部分?

此外,我发现如果您不在图层的对象之外,则 mouseenter 和 mouseleave 也不受尊重。

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
</head>
<body>
<script src="js/modulePattern.js"></script>
<script src="https://unpkg.com/konva@2.4.2/konva.min.js"></script>



<div id="container"></div>
<script>

function demo() {

var stage = new Konva.Stage({
container: 'container',
width: 100,
height: 100
});

var layer = new Konva.Layer({draggable: true});
stage.add(layer);

layer.on("dragmove", function() {
console.log(this.x(), this.y())
});

layer.on("mouseenter", function() {
stage.container().style.cursor = 'pointer';
});

layer.on("mouseleave", function() {
stage.container().style.cursor = 'default';
});

var rect = new Konva.Rect({
width: 50,
height: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 5
});

layer.add(rect);

stage.draw();
}

demo();
</script>

</body>
</html>

最佳答案

Konva 不会检测图层空白区域上的事件。如果舞台上有好几层,目前尚不清楚它如何做到这一点。

如果您仍然需要监听空图层并使图层可在任何空间拖动,您可以:

  1. 使舞台可拖动并监听其上的事件(单击也适用于空白空间)。

  2. 添加一个透明矩形作为背景,以便它将用于监听事件:

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
</head>
<body>
<script src="js/modulePattern.js"></script>
<script src="https://unpkg.com/konva@2.4.2/konva.min.js"></script>



<div id="container"></div>
<script>

function demo() {

var stage = new Konva.Stage({
container: 'container',
width: 300,
height: 300
});

var layer = new Konva.Layer({draggable: true});
stage.add(layer);


layer.on("mouseenter", function() {
stage.container().style.cursor = 'pointer';
});

layer.on("mouseleave", function() {
stage.container().style.cursor = 'default';
});

var rect = new Konva.Rect({
width: 50,
height: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 5
});

var back = new Konva.Rect({
fill: 'red',
width: stage.width(),
height: stage.height()
})
layer.add(back);

// move rectangle so it always stay on the screen, no matter where layer it
layer.on('dragend', function() {
back.setAbsolutePosition({x: 0, y: 0});
layer.draw();
});



layer.add(rect);

stage.draw();
}

demo();
</script>

</body>
</html>

关于javascript - 从空白区域拖动 Konva 图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53270863/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com