我正在尝试使用 Jquery UI 创建一个拖放工具,将房屋的房间拖放到 Konva 阶段,然后将该阶段保存为 JSON 字符串。
这是 JSFiddle:http: //jsfiddle.net/RossWilliams94/cxzhabgL/4/
function dragDrop(e, ui) {
// get the drop point
var x = parseInt(ui.offset.left - offsetX, 10);
var y = parseInt(ui.offset.top - offsetY, 10);
// get the drop payload (here the payload is the image)
var element = ui.draggable;
var data = element.data("url");
//var theImage = document.getElementById('bedroom');
var theImage = element.data("image");
// create a new Konva.Image at the drop point
// be sure to adjust for any border width (here border==1)
var image = new Konva.Image({
name: data,
x: x,
y: y,
image: theImage,
draggable: true
});
image.on('dblclick', function() {
image.remove();
layer.draw();
});
var $clone = ui.helper.clone();
// all clones are draggable
// if clone is shape then draggable + resizable
if (!$clone.is('.inside-droppable')) {
$(this).append($clone.addClass('inside-droppable').draggable({
containment: $stageContainer,
tolerance: 'fit',
cursor: 'pointer',
position: 'relative',
snap: true,
snapTolerance: 15
}));
if ($clone.is(".imag") === false) {
$clone.resizable({
containment: $stageContainer
});
}
$clone.on('dblclick', function () {
$clone.remove();
layer.draw();
});
$clone.css({top: y, left: x, position:'absolute'});
}
json = stage.toJSON();
group.add(image);
layer.add(group);
stage.add(layer);
}
但是,我遇到的问题是,正如您从 JSFiddle 中看到的那样,当我单击保存按钮时,它不会保存从 JQuery UI 放入的房间,只保存背景和标签。
真的有可能做到这一点吗?还是因为我使用带有 Konva 的 Jquery UI 会产生问题?
谢谢。