【发布时间】:2012-11-15 18:14:08
【问题描述】:
我即将开始一个房间设计师项目,它允许您将墙壁/门/家具等拖放到网格上来设计房间。我已经决定拖放透明 PNG 并绝对定位它们是行不通的,我不想使用 flash,所以它是 Canvas 或 SVG。
我:我以前从未使用过 Canvas 或 SVG,但在 javascript 和 jQuery 方面我非常胜任(我对 OO Javascript、匿名函数、闭包、回调等都很好)而且我已经阅读了 Douglas Crockford 的“Javascript: The Good Parts”并理解了大部分内容;-)
项目 - 需要从组件窗口拖放到设计器窗口,需要在平板电脑(而不是手机)上工作,因此需要考虑触摸事件。还需要工具提示、对象分层等。如果我确实使用矢量图形,那么它们无论如何都需要有位图纹理(例如,墙板可能有壁纸纹理)
到目前为止,我已经阅读了一本关于 Canvas 的书,并得出以下结论......
画布
- 快速
- 在画布上重绘对象非常简单
- 还不知道鼠标事件
- EaselJS、FabricJS 和 KinectJS 等库看起来不错。
SVG
- 可扩展(更容易构建缩放功能)
- 易于从 Illustrator 等工具导入图形。
- 绘图库看起来不那么丰富/好。
- 不知道鼠标/触摸事件。
所以,我需要尽快弄清楚如何做到这一点。现在我倾向于 Canvas 和一个好的库,因为我相信它们中的一些无论如何都可以导入 SVG 以实现可扩展性。
非常感谢任何有关前进方向的建议。
【问题讨论】:
-
为什么不能使用组合?
-
@Marty - 通过将 SVG 导入画布,这将如何工作?
-
您可以简单地将 svg 覆盖在画布上
-
正如你所说的 SVG 库并不丰富,我只是想让你知道raphaeljs.com,以防你还不知道。
-
也许我在这里感到困惑,但是将 svg 分层到画布上会有什么帮助?我认为您的意思是绝对定位它们并通过放置在它们后面的画布使它们可拖动。如果是这样,那么画布是用来做什么的,只是画一个背景?
标签: javascript html canvas svg