【发布时间】:2014-01-24 19:27:20
【问题描述】:
我正在FabricJS 画布库之上构建一个图表库。到目前为止,一切都运行良好,如图所示:
但是,我已经开始实现click 事件并且遇到了问题。由于某种原因,点击事件无法完全发挥作用——它在某些地区有效,而在另一些地区则无效。例如,对于底部绘图区域(<div> 与 <canvas> 内),单击事件非常尴尬:当我单击绿色区域时,它说我单击了紫色区域,而蓝色区域的前 100 个奇数像素没有发出点击事件:(。另一方面,顶部绘图区域完美运行。
我已经完整阅读了FabricJS 上的整个文档,并且意识到它的缺陷,但我不知何故无法理解为什么会发生这种情况。我看到人们调用path.setCoord() 来刷新路径坐标,但这并没有帮助。
还有一件事,因为我正在编写 GWT 模块,所以我需要在 JS 中编写 JSNI 包装器,但我相信我做得对。
我是否可能忽略了FabricJS 的某些内容?
更新:
生成的 HTML:
边界框 - 下部绘图区域中的蓝色区域
完全相同的边界框位于上方的蓝色区域:-/
【问题讨论】:
-
不看实际例子就很难说。这些形状的边界区域是多少?这是对 Fabric 中的事件做出反应的区域。
-
另外,它是
setCoords而不是setCoord(不确定是这里还是代码中的错字) -
@kangax 感谢您的回答。那是一个错字——我的意思是
setCoords()。我将尝试隔离蓝色区域的边界框数据。开始怀疑“情节区域”的相对定位与这个烂摊子有关。我已经用生成的 HTML 更新了问题:<DIV>s 都相对定位,而<CANVAS>es 具有绝对定位... -
我隔离了边界框,并且考虑到较低的绘图区域是分开的
<DIV>和<CANVAS>,这些值似乎是预期的,对吧? -
看起来画布相互重叠,对吧?