您的代码如下所示:
$('#testBtn').click(function() {
var stageKnocker = new Kinetic.Stage({
container: "canvas-overlay",
width: 402,
height: 470
});
var layerKnocker = new Kinetic.Layer();
var imageObj = new Image();
imageObj.onload = function(){
var image = new Kinetic.Image({
x: 193,
y: 110,
image: imageObj,
width: 25,
height: 50,
draggable: true
});
layerKnocker.add(image);
stageKnocker.add(layerKnocker);
};
imageObj.src = "http://shop.windowrepairshop.co.uk/WebRoot/Store3/Shops/es115683_shop/49E6/ECF2/0C60/3750/10B1/50ED/8970/710D/V6GP_0020_gold_0020_plate_0020_vic_0020_urn_0020_LArge.jpg";
})
第一个问题是每次用户单击按钮时您都会创建一个新阶段。不要那样做——你只想要一个阶段。
每次用户单击按钮时,您都会创建一个新层。不要那样做。您只需要 & 想要一个单层。
最后,每次用户单击按钮并将其添加到图层时,您都会创建一个新的 Kinetic.Image。没关系!继续这样做。但您还想删除旧的 Kinetic.Image。如果不这样做,您将继续添加图像,而不是替换它们。
因此,在将 Kinetic.Image 添加到图层之前,您希望从图层中删除任何现有图像:layerKnocker.removeChildren()
将删除图层中的所有内容。
完成后,您将拥有一个阶段、一个图层,并且在任何时间点都有一个图像。