我使用KineticJS将图像添加到图层。我需要知道点击了哪一层。
这是jsfiddle:http://jsfiddle.net/yvp79ryf/1/
如果我点击第一张图片,只需要获取提醒点击是第一层,否则第二层
HTML
<div id="container"></div>
<script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.4.3.min.js"></script>
<script defer="defer">
的JavaScript
var stage = new Kinetic.Stage({
container: 'container',
width: 578,
height: 200
});
var layer = new Kinetic.Layer();
var imageObj = new Image();
imageObj.onload = function() {
var yoda = new Kinetic.Image({
x: 140,
y: stage.getHeight() / 2 - 59,
image: imageObj,
width: 106,
height: 118
});
layer.add(yoda);
stage.add(layer);
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/yoda.jpg';
var layer2 = new Kinetic.Layer();
var imageObj2 = new Image();
imageObj2.onload = function() {
var filteredYoda = new Kinetic.Image({
x: 280,
y: stage.getHeight() / 2 - 59,
image: imageObj2,
width: 106,
height: 118
});
layer2.add(filteredYoda);
stage.add(layer2);
};
imageObj2.src = 'http://demo-stable-ofbiz.apache.org/images/products/GZ-1000/small.png';
答案 0 :(得分:1)
如果您点击图片,则可以使用.getLayer()
获取所点击图片所在图层的参考。
stage.on('click', function(e) {
console.log('layer:',e.target.getLayer().id());
});
KineticJS不会听取图层空白部分的点击。因此,如果单击舞台的空白部分,则无法确定单击了哪个图层。但是,由于layer2
高于layer
,因此如果您点击舞台的空白部分,那么您总是点击顶层(第2层)。
答案 1 :(得分:1)
您需要将ID设置为图层以识别它们。
var layer = new Kinetic.Layer({id:1});
var layer2 = new Kinetic.Layer({id:2});
在舞台上添加点击事件处理程序
stage.on('click', function(e) {
if(e.targetNode.parent.attrs.id == 1){
alert('first layer');
}else{
alert('second layer');
}
});
您可以通过后代检查图层ID
e
是MouseEvent对象。
e.targetNode
是Kinetic.Image
e.targetNode.parent
是Kinetic.Layer
e.targetNode.parent.attrs.id
是Kinetic.Layer的身份