odd*_*uck 0 html5 image src kineticjs
我试图通过点击按钮在我的kineticjs阶段更改图像的src.
我有一个可拖动的图像(在这种情况下是darth-vader)和顶部的静态图像(在这种情况下是猴子).单击一个按钮,我希望能够用新的替换可拖动的图像(yoda)
JSFiddle可以在这里看到:
我想到了以下几点:
btn.addEventListener("click", function (event) {
mainImage.src = path+'yoda.jpg';
layer.removeChildren();
draw(mainImage,true);
draw(foregroundImage,true);
Run Code Online (Sandbox Code Playgroud)
});
将完成它:首先通过更新src,然后删除所有对象并以正确的顺序重新绘制它们.
出于某种原因,虽然我得到了2张yoda图像放在舞台上 - 1正确落后但另一个高于其他一切......
您可以使用KineticJS setImage函数轻松交换图像源,并传入Javascript图像对象,而不是删除所有子项并将其添加回来:http://kineticjs.com/docs/Kinetic.Image.html#setImage
我更新了你的draw函数,它需要一个id和name,以便我们以后可以选择Kinetic Image对象:
// Draw function
function draw(image,drag,id,name){
if (typeof id == 'undefined') id = '';
if (typeof name == 'undefined') name = '';
var img = new Kinetic.Image({
image: image,
draggable: drag,
id: id,
name: name
});
layer.add(img);
layer.draw();
return img;
}
Run Code Online (Sandbox Code Playgroud)
然后这是你的更新点击功能:
// Change draggable Image
btn.addEventListener("click", function (event) {
layer.get('#mainImageId')[0].setImage(mainImage2); //get the object with id "mainImageId"
layer.draw();
});
Run Code Online (Sandbox Code Playgroud)
另外,我foregroundImage在mainImage onload函数中移动了你的load函数,这样我们就可以确保在以下代码之后将Monkey添加到舞台mainImage:
// Define draggable image
var mainImage = new Image();
mainImage.onload = function () {
draw(mainImage,true, 'mainImageId');
// Define foreground image
var foregroundImage = new Image();
foregroundImage.onload = function () {
draw(foregroundImage,false);
};
foregroundImage.src = path+'monkey.png';
};
mainImage.src = path+'darth-vader.jpg';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3122 次 |
| 最近记录: |