Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从空白区域拖动Konva层_Javascript_Konvajs - Fatal编程技术网

Javascript 从空白区域拖动Konva层

Javascript 从空白区域拖动Konva层,javascript,konvajs,Javascript,Konvajs,我想拖动一个Konva层,即使是空的。我发现我只能在存在对象的地方拖动图层(代码显示,可以在矩形所在的地方拖动,但不能在其他地方拖动) 如何拖动拖动空零件的图层 此外,我还看到,如果您不在层的对象中,mouseenter和mousleave也不受尊重 函数demo(){ var阶段=新Konva.阶段({ 容器:'容器', 宽度:100, 身高:100 }); var layer=new Konva.layer({draggable:true}); 阶段。添加(层); 层上(“拖动”,函数(

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

如何拖动拖动空零件的图层

此外,我还看到,如果您不在层的对象中,mouseenter和mousleave也不受尊重


函数demo(){
var阶段=新Konva.阶段({
容器:'容器',
宽度:100,
身高:100
});
var layer=new Konva.layer({draggable:true});
阶段。添加(层);
层上(“拖动”,函数(){
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=新Konva.rect({
宽度:50,
身高:50,
填充:“红色”,
笔画:“黑色”,
冲程宽度:5
});
层。添加(rect);
stage.draw();
}
演示();

Konva不会在层的空白区域检测到事件。如果你在舞台上有好几层,它是如何做到的还不清楚

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

  • 改为使舞台可拖动,并监听舞台上的事件(
    单击
    也可以在空白处工作)

  • 添加一个透明矩形作为背景,以便用于侦听事件:

  • 
    函数demo(){
    var阶段=新Konva.阶段({
    容器:'容器',
    宽度:300,
    身高:300
    });
    var layer=new Konva.layer({draggable:true});
    阶段。添加(层);
    layer.on(“mouseenter”,function()){
    stage.container().style.cursor='pointer';
    });
    layer.on(“mouseleave”,function()){
    stage.container().style.cursor='default';
    });
    var rect=新Konva.rect({
    宽度:50,
    身高:50,
    填充:“红色”,
    笔画:“黑色”,
    冲程宽度:5
    });
    var back=新的Konva.Rect({
    填充:“红色”,
    宽度:stage.width(),
    高度:stage.height()
    })
    图层。添加(返回);
    //移动矩形,使其始终保持在屏幕上,无论它位于何处
    layer.on('dragend',function()){
    setAbsolutePosition({x:0,y:0});
    layer.draw();
    });
    层。添加(rect);
    stage.draw();
    }
    演示();