在Phaser3中向SVG元素添加事件

他喜欢C

我有一个SVG图像文件,具有一些路径。就像是:

<svg>

  <g>

   <path id="land" class="land" d="M108.114,402.043l0.683,1.604l-1.204.(truncated)">

   <path id="ice" class="ice" d="M288.114,402.541l0.683,1.604l-1.204...........">

   <path id="water" class="water" d="M038.114,402.543l0.683,1.604l-1.204........">

  </g>

</svg>

我需要知道单击了哪个路径。当我使用load.svg()在Phaser中加载SVG图像文件时,将为整个图像而不是仅针对区域(或路径)触发事件。

因此,如何检测单击了哪个路径?任何帮助表示赞赏。

哈里·舒尔勒

可能使用了错误的术语,但是SVG加载程序将投影的SVG绘制为静态位图纹理。这消除了这些路径对象的存在。即使将这些路径拆分为自己的SVG并对其进行分层,基于纹理的大小,纹理的命中框也将是矩形的。

如果将这些路径分为各自的SVG,则会存在计算上更昂贵的Hitbox,并且为Hitbox设置Docs Phaser3 #makePixelPerfect启用了像素完美功能这将查看投影的纹理,并将hitboxArea应用于每个SVG渲染的像素。

每个SVG较便宜的Hitbox是在输入管理器测试指针事件时实现自定义的hit测试功能。文件Phaser3 HitAreaCallback这将变得更加困难,其难度取决于您要使用的Hitbox的形状以及所需的准确性。可以在Phaser.Geom命名空间中找到基本的几何形状以及包含用于命中测试的方法,如果这些几何条件与您的用例不匹配,则需要您自己编写/查找函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章