【问题标题】:Ignore click on transparent parts of images忽略点击图片的透明部分
【发布时间】:2021-03-27 11:34:47
【问题描述】:

我正在开发一款游戏。为此,我有几张图像(图块)相互重叠,以便获得透视。问题是当我尝试单击其中一个图块时。由于它们是重叠的,当单击一个时,它是另一个接收事件的图像。如何忽略对图像透明部分的点击?

【问题讨论】:

  • 这里有两个问题,所以两个解决方法 1) 给所有图像一个公共标识符,每个图像一个唯一标识符类或 Id 什么的。然后在图像/通用标识符上使用点击事件检查事件目标是否具有您想要继续的唯一标识符 - 如果这样那样这样做,否则这样做。
  • 你不能点击图片的部分,这不是点击事件的工作原理。
  • 2) 对于透明的,您需要进行计算假设您的图像是 200x200 并且只有居中的 100x100 是彩色的,那么您需要确定在图像上发生点击的位置,因为满足上述 no1 和脚本收益。现在那是一大堆混乱
  • 我不会挑衅地尝试交叉点观察器,因为它提供了执行上述计算所需的功能developer.mozilla.org/en-US/docs/Web/API/…
  • 我知道可靠地做你想做的事情的唯一方法是使用 canvas/dataurl 并检查点击的坐标是否在图像的透明部分上。如果是,请忽略它并转到下一张图片。

标签: html css reactjs click tile


【解决方案1】:

这是我尝试使用地图重新创建的内容。

  1. 将一张图片叠加在另一张图片上,为它们提供了类似的标识符
  2. 您会注意到,如果您单击图像的下半部分,它不会触发事件,因为它的地图占据了图像的顶部。
  3. 所以我们在地图区域创建了一个事件
  4. 然后创建了一个无限循环,如果元素具有我们想要的 id,则运行该循环以匹配,如果它有,那么我们已经运行了一些代码。

var spool = document.querySelectorAll('.clicked');

spool.forEach(item => {
  item.addEventListener('click', event => {
   alert(event.currentTarget.getAttribute('alt'));
  })
});




var mapo = document.querySelector('.map');

mapo.addEventListener('click', event => {


var searching = event.target.parentNode;
   while (true) {

    if (searching.id == 'trigerme') {
    alert(searching.getAttribute('alt'));
        break;
    } 
searching= searching.previousSibling;
    
  
}
   
   

  })
<img src="https://www.w3schools.com/html/workplace.jpg" alt="something else yes"  width="400" height="379" class='clicked' id="trigerme">

<img src="https://www.w3schools.com/html/frenchfood3.jpg" alt="something else no" style="position:relative; margin-top:-379px;" usemap="#workmap" width="400" height="379" class='clicked' >


<map name="workmap" class="map">
  <area shape="rect" style="background-color:red;" coords="34,44,270,350" alt="Computer" >

</map>

【讨论】:

  • 可以在div中使用“usemap”吗?
  • 地图可以应用于图像,无论它们在 div 中还是在它之外。只要有图像和地图并且两者能够相互引用,它就可以工作。
  • 但是,如果您需要与没有任何图像的 div 相同的功能,那么您必须再次发挥创造力,在顶部使用自己的一堆透明 div 作为伪元素或其他方式
  • 您需要透明的东西 + 点击事件 + 固定的图像 .... 看看周围的对话元素,看看如何为您工作developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog
猜你喜欢
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 2022-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
相关资源
最近更新 更多