Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 制作家具布局工具,需要一些建议吗_Php_Javascript_Raphael - Fatal编程技术网

Php 制作家具布局工具,需要一些建议吗

Php 制作家具布局工具,需要一些建议吗,php,javascript,raphael,Php,Javascript,Raphael,我正在制作一个web应用程序,它主要发生在客户端,并在服务器端(PHP/MySQL)处理和存储数据。该应用程序允许您将不同的家具添加到房间中。这些家具将主要用简单的形状(矩形、正方形等)来表示,除了一些独特的形状,如“L”形和“U”形(没有曲线,所有的直边)。我需要能够根据用户输入的尺寸计算出这些物品的平方英尺。存储每件产品的“配方”的最佳方法是什么 另一部分是我计划有一个拖放式界面,用户可以将家具放在房间里。我一直在研究如何使用元素,但后来我发现。这似乎是更好的方式,因为它支持更多的浏览器。我

我正在制作一个web应用程序,它主要发生在客户端,并在服务器端(PHP/MySQL)处理和存储数据。该应用程序允许您将不同的家具添加到房间中。这些家具将主要用简单的形状(矩形、正方形等)来表示,除了一些独特的形状,如“L”形和“U”形(没有曲线,所有的直边)。我需要能够根据用户输入的尺寸计算出这些物品的平方英尺。存储每件产品的“配方”的最佳方法是什么

另一部分是我计划有一个拖放式界面,用户可以将家具放在房间里。我一直在研究如何使用
元素,但后来我发现。这似乎是更好的方式,因为它支持更多的浏览器。我需要从这个界面获得的主要内容是:

  • 能够控制每一侧(形状中的任何直边)并更改其颜色
  • 保存每个形状的位置,以便我可以随时重建布局
Raphael的语法看起来相当简单,存储我制作的每个形状的SVG的最佳方法是什么,这样当用户单击“添加”时,该形状已经计算并可以添加


因此,拉斐尔基本上是这种类型的接口/需求的好选择吗?还有,我如何在数据库中存储信息,例如我制作的形状以及每个布局(形状、尺寸和每个形状的位置的组合),以便我可以加载任何保存的布局?

我相信您的方向是正确的,请使用SVG和Raphael,或者您可以使用以下库之一:

  • jsPlumb:-为开发人员提供了一种可视化连接其网页上元素的方法。它在现代浏览器中使用SVG或画布,在石器时代浏览器中使用VML。最新版本1.3.3可与jQuery、MooTools和YUI一起使用。包括对拖动的完全透明支持,API非常简单
  • JointJS:www(dot)JointJS(dot)com/-是一个用于创建图表的JavaScript库。图表可以完全交互。联合库既适用于实现图表工具,也适用于发布图表。功能:
    用各种类型的箭头连接矢量对象; 与连接和对象交互; 各种事件的自定义处理程序; 弯曲线平滑; 准备好使用著名图表的元素(ERD、组织结构图、FSA、UML、PN、DEV、LDM); 层次图; 序列化(从JSON格式到JSON格式,SVG仅在支持它的浏览器中导出); 可扩展; 可定制
  • Cajal:-Cajal提供了面向对象的功能,可以在画布元素上绘制形状并为其设置动画。您可以轻松地在其他项目中重用动画或复杂形状对象,因为每个形状都可以指定给站点上任意多个画布元素

关于公式,我将以JS对象格式存储最后的维度和点,我相信公式可以存储在对象中,并使用策略模式创建,您可以传递正确的应用模式。

我认为存储对象和用户创建布局的最简单解决方案分别是json和svg

每件家具都可以是一个json对象,具有大小、颜色等属性,一个使用这些属性生成svg片段的方法,一个基于属性获取平方英尺的方法,一个对它所表示的svg元素的引用,以及同时更新属性和svg的setter方法

可以在Raphael中进行布局,Raphael画布的svg保存为布局状态。 为了在Mysql中存储这些内容,我将为svg状态创建一列,为包含svg中表示的所有对象的大型json创建一列


缺点是json不太可查询。如果需要,您可能需要考虑本地的JSON数据库,如MunGDB,因为它允许您使用查询中的对象的公式。

个人,我将查看jQuery UI和<代码>可拖动< /COD>特性,再加上浮动<代码> <代码> s,您可以用作家具件。从那里,您可以刮取所有放置的层,获取它们的位置、大小等,并使用AJAX存储信息以供以后使用、保存等。@bradcristie我实际上只是想建议一种类似的方法。如果这个应用程序不需要比这里描述的扩展得更远,那么您可能可以使用可拖动的div。您甚至可以使用jQuery UI强制捕捉元素边缘,这对于布局工具来说非常方便。所以,你们是说不要用SVG定义形状,而是使用
s中的图像?我必须同意前面的评论。到目前为止都是好主意。对于您关于公式存储的问题:可能只在JS中保存为简单的JS对象。您可以将U形和L形分解为两个或三个矩形,因此公式也很简单。我选择SVG的原因是,一些非基本形状中有曲线,我需要一种方法为边添加颜色。有4种不同的颜色,一个形状最多可以有8个侧面。所以我需要一些简单的方法来绘制它,并存储关于每一面的信息。谢谢!战略模式是一个伟大的想法,从来没有想到过。问:这在客户端很好,但是我如何在服务器端存储它?假设我有一个L形,它有6条边,我希望能够存储用户为给定边输入的任何维度。如何在数据库中表示这一点?我会创建一个“形状”表和一个“侧面”表,并且一个形状有许多侧面吗?理想情况下,存储在数据库中的形状能够以正确的尺寸为每一侧重新绘制