2013-08-12 50 views
1

我需要以图形方式连接两个项目。使用EaselJS在两个对象之间绘制任意线的最佳方法是什么?是否有可能制造类似于最接近物体的磁铁线?使用EaselJS绘制任意线条

你会有这样的例子吗?

问候。

回答

3

最简单/最快的方法可能是使用一个形状,并使用moveTo()与第一个对象的坐标,然后lineTo()与第二个对象的坐标。每当物体移动时,清除并重新绘制线条。 性能明智我不能说如果这是最好的方式,但如果它不是太多的线路和桌面只有我不担心,那么你应该没问题。

另一种选择是使用一个位图,它包含一个直线和刻度+将其旋转到正确的长度/角度,如果您希望您的行以任何方式“幻想”,这可能会更方便,用形状绘制太困难。

+0

这两种方法对我来说似乎都很好,但我认为我不会重画这条线,因为它可以在移动设备上使用。 只是一个问题涉及到第一种方式,有没有什么办法来检查两点之间的界线是否与第三个物体发生碰撞? – Cod1ngFree

+0

当然,方法1)(可能)表现最好的方法:测量从obj3到线的距离:http://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line,如果它低于某个阈值(宽度/高度obj3)然后你必须检查它是否在obj1和obj2之间,如果是的话,那么它会发生交叉。 **或**方法2)(更准确一些)计算obj3的边界并对该矩形的每一边使用一个线条检查:http://en.wikipedia.org/wiki/Line-line_intersection,另外你'必须检查是否有一个相交点位于obj1 + 2 – olsn

+0

或方法3之间)最差的表现,但容易和像素完美的方法(只适用于位图和**而不适用于形状)您可以放置​​线条,然后进行像素碰撞检查(https://github.com/olsn/Collision-Detection-for-EaselJS),然后在碰撞时执行操作。 – olsn