【发布时间】:2011-10-09 18:23:05
【问题描述】:
我正在制作一个 Web 应用程序,该应用程序主要发生在客户端,并在服务器端 (PHP/MySQL) 处理和存储数据。该应用程序可让您将不同的家具添加到房间中。这些家具将主要由简单的形状(矩形、正方形等)表示,除了一些独特的形状,如“L”形和“U”形(没有曲线,所有直边)。我需要能够根据用户放入的尺寸来计算任何这些部件的平方英尺。存储每块“公式”的最佳方法是什么?
另一部分是我计划有一个拖放式界面,用户可以在其中将家具放置在房间中。我一直在研究使用<canvas> 元素,但后来我遇到了Raphael。这似乎是更好的方法,因为它支持更多的浏览器。这个界面我需要的主要内容是:
- 能够控制每一边(形状中的任何直边)并更改其颜色。
- 保存每个形状的位置,以便我可以随时重建布局。
Raphael 的语法看起来相当简单,为我制作的每个形状存储 SVG 的最佳方法是什么,以便当用户单击“添加”时,形状已经计算好并可以添加?
所以基本上,Raphael 是这种类型的界面/需求的好选择吗?而且,我如何将诸如我制作的形状以及每个布局(形状、尺寸和每个形状的位置的组合)等信息存储在数据库中,以便我可以加载任何保存的布局?
【问题讨论】:
-
就个人而言,我会研究 jQuery UI 和
draggable功能,再加上可以用作家具的浮动<div>s。从那里,您可以抓取所有放置的图层并获取它们的位置、大小等,并使用 AJAX 存储信息以供以后使用、保存等。 -
@BradChristie 我实际上只是想提出一个类似的方法。如果这个应用程序不需要比这里描述的更远,你可以使用可拖动的 div。您甚至可以使用 jQuery UI 强制对齐元素边缘,这对于布局工具来说非常方便。
-
那么你们是说摆脱使用 SVG 定义形状并使用
<div>s 中的图像吗? -
我必须同意以前的 cmets。到目前为止的好想法。关于存储公式的问题:也许只是在 JS 中保存为简单的 JS 对象。您可以将 U 形和 L 形分解为两个/三个矩形,因此公式也很简单。
-
我选择使用 SVG 的原因是因为一些非基本的形状中有曲线,我需要一种方法来给一边颜色。有 4 种不同的颜色,一个形状最多可以有 8 个面。所以我需要一些简单的方法来绘制它并存储关于每一面的信息。
标签: php javascript raphael