actionscript-3 - ActionScript 3 - 是否可以仅当鼠标单击图像部分时才触发单击事件?

标签 actionscript-3 occlusion

我有一个问题,并且我有潜在的解决方案。但我想确认是否有一种简单易行的方法来解决我的问题。

应用程序类型:

等距游戏

问题陈述:

我正在 Flash 应用程序中加载图像,并附加了鼠标事件。

我加载的图像是车辆、树木、建筑物等 Prop 图像,并且所有图像都是透明的。

示例:红球 Assets (请忽略我用来描述问题的黄色背景)

Red Ball Asset

如果我点击实际图像区域(红色),那么一切都很完美

当我点击空白图像部分(或透明区域,我以黄色显示)时,我不想触发 mouseevent

我知道有一种方法是在 Flash 中创建蒙版。我不想这样做,除非这是最后的选择,因为我加载图像资源而不是 Flash 资源,而且我不这样做不想为所有 Assets 创建新的蒙版 Assets

我打算采用另一种方法,即使用 Bitmap 的 getPixel 方法。正在讨论here .

但是这个方法还有一个问题。

当我单击资源的空白部分时,我可能可以忽略单击事件,但如果图像后面同一位置有其他资源,那么我需要处理被遮挡图像的单击事件.

嗯,思考这个问题的解决方案让我想到了 getObjectsUnderPoint我可以在哪里扫描被遮挡的 Assets

最佳答案

嗯,您提出的解决方案 100% 有效。只需将确定单击哪个游戏对象的逻辑移到该对象之外即可。

  1. 在包含游戏对象的容器中监听 MOUSE_DOWN/MOUSE_UP 事件。
  2. 观看事件
  3. 使用 BitmapData.getPixel32 检查作为此事件目标的游戏对象此时是否透明
  4. 如果是,请使用 getObjectsUnderPoint 找出此时所有其他游戏对象
  5. 在循环中查找第一个此时不透明的对象

现在你得到了被击中的实际物体。

关于actionscript-3 - ActionScript 3 - 是否可以仅当鼠标单击图像部分时才触发单击事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9546334/

相关文章:

actionscript-3 - 在 ActionScript 中定义

javascript - 继续在 Typescript 和 ActionScript 3 之间打字

augmented-reality - AR 中的遮挡

audio - XAudio2 遮挡处理

c++ - DirectX 着色器无法正常工作?

OpenGL:如何确定 3D(渲染)点是否被其前面的其他 3D(渲染)图元遮挡?

actionscript-3 - 如何在 Action Script 3.0 中表示空数组

apache-flex - 如何在Java中使用AIR 2.0 NativeProcess API?

flash - 加载程序和加载的 SWF 的自动调整大小