gpt4 book ai didi

javascript - 从 "dragmove"回调中移动层后事件丢失

转载 作者:行者123 更新时间:2023-11-29 22:09:46 25 4
gpt4 key购买 nike

我有一个移动层的滚动条,因此层在滚动条的“dragmove”回调中移动。这会导致所有绑定(bind)事件在移动层上断开连接!

请看这个 fiddle :http://jsfiddle.net/NY4QK/10/

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

var fixedLayer = new Kinetic.Layer();
stage.add(fixedLayer);

var old_x = 100;
var old_y = 100;

var scroller = new Kinetic.Circle({
x: old_x,
y: old_y,
radius: 10,
fill: '#00F',
stroke: 'black',
strokeWidth: 4,
draggable: true
});

scroller.on('dragmove', function(event){
var pos = scroller.getAbsolutePosition();
layer.move(pos.x - old_x, pos.y - old_y);
old_x = pos.x;
old_y = pos.y;
layer.draw();
});

fixedLayer.add(scroller);

var layer = new Kinetic.Layer();
stage.add(layer);

var rect = new Kinetic.Rect({
x: 10,
y: 10,
width: 50,
height: 50,
fill: '#0F0',
stroke: 'black',
strokeWidth: 4
});


rect.on('click', function(){
rect.remove();
layer.draw();
});

layer.add(rect);

layer.draw();
fixedLayer.draw();

这是错误还是我做错了什么?

最佳答案

当您使用拖动事件时,KineticJS 会在顶部创建一个临时层,因此您的事件在 dragmove 之后不会被注册。

只需为 dragend 添加另一个处理程序,如下所示:

scroller.on('dragend', function(event){
layer.moveToTop();
layer.draw();
});

这里是 updated fiddle .

有关您遇到的问题的更多详细信息/解释,请查看:https://github.com/ericdrowell/KineticJS/issues/219

关于javascript - 从 "dragmove"回调中移动层后事件丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18676906/

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