问题描述
|
我正在使用PHP,javascript和Canvas或SVG创建动态的交互式网络图
但是,对于画布,我不知道如何使每个对象都是可选择的。我不想使用隐藏的画布并检测鼠标是否在某个对象上,因为我将有很多相交的对象,并且有很多画布层会很乱。
我对SVG一无所知。
SVG会更好地达到目的吗?或什么是画布解决方案。
解决方法
SVG的优点之一是它具有表示图形中形状的具体DOM对象,因此您会自动获得大量鼠标事件处理和事件冒泡。
另外,您可以使用EaselJS,它提供了一个非常强大的显示列表,使您无需管理隐藏的画布。
, 已经有一些用于构建图和图形的项目。您可以尝试基于SVG的Raphaël,因此它也应该兼容。
, 我认为“隐藏的画布”是您的教程。它仍然可以与多个对象和多个图层一起使用,您只需要以适当的z顺序绘制它们即可。
当然有更快(但更复杂)的方法。
如果您不想处理它,则SVG内置了所有对象选择。按照Zlatev的建议尝试Raphael。如果性能太差(对象太多),则必须切换到画布,因此它实际上取决于图表中节点/链接的数量。
但是,您将不得不自己(以您喜欢的任何方式)将数据发送到服务器。 SVG / Canvas / Raphael中没有内置可以为您完成的任务。