繁体   English   中英

KineticJS哪一层单击了?

[英]KineticJS which layer clicked?

我使用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';

如果单击图像,则可以使用.getLayer()获取对单击图像所在图层的引用。

stage.on('click', function(e) {
    console.log('layer:',e.target.getLayer().id());
});

KineticJS不会监听层的空白部分的点击。 因此,如果单击舞台的空白部分,则无法确定单击了哪一层。 但自从layer2以上layer ,然后如果你点击在舞台上,然后你总是点击顶部层(二层)上的空白部分。

您需要将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的ID

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM