2010-10-20 95 views
6

假设我有一个html5/canvas应用程序,我可以在其中将对象放置在绘图画布上。某种图表编辑器,类似Visio(但更简单)找出在html5 Canvas上点击了哪个对象

是否有框架帮助我找到哪个对象被点击/拖拽?

一种选择是捕捉到的点击事件,并遍历所有的对象(在一个半智能的方式),并检查它是否点击/ draged,我不想推倒重来:)

回答

0

不幸的是,没有对象渲染到画布中的对象模型。您需要跟踪所绘制的所有内容,并在检测到点击,鼠标移动,拖动,拖动时触发单独的事件。这意味着要为所有上下文方法创建一个包装,将行/图像及其属性存储到COM(Canvas Object Model :)中,并为每个行/图像触发事件。那就是它。这可以是一个lot的工作,我已经采取了编写自定义代码,每次我需要添加交互到画布

1

对于Visio样式的应用程序或任何与绘制对象的交互性是重要的,用SVG重新打好。已经有some open source projects,您可以使用它作为起点。 SVG的问题在于,与任何DOM重的东西一样,一旦有大量对象需要操作,性能就会急剧下降。

+0

什么是 '大量'? 100? 10.000? – Dribbel 2010-10-20 18:42:59

+0

当使用excanvas绘制超过10,000点的积分时,我会表现呆滞 – 2010-10-20 20:53:19

+0

@Dribbel如果您的目标是具有现代浏览器的桌面,则超过10,000,如果您使用手机,则可能会更加类似,这取决于浏览器和计算机规格1000,如果你想用VML在IE中工作,也许有几百个。 – robertc 2010-10-20 21:46:23

相关问题