2012-11-01 96 views

回答

2

如果你知道如何寻找上线点的交集,那么你应该能够找到墙壁和家具(线和边缘之间的距离矩形的),你可以检查此值,例如停止draging和捕捉,

EDIT1: 当拖动项目被选中(按下鼠标时),比你不断地检查距离(例如,在鼠标移动)时, ñ你可以决定,如果距离在一定的阈值内,你将停止移动(基本上你会设置计算位置快照 - 而不是应用鼠标位置),否则你将按照鼠标。

EDIT2: 也可以测试如果该点是在形状内部通过计算交点 - 偶数的点以外,奇数 - 点是内部

问候

+0

我试图那。找到相交点时,我停止了家具的移动。但是,如何在停止时再次移动它? –

+0

更新的答案 - 基本上不是你停止拖动 - 你所做的只是在满足一些条件时设置新的位置。 –

+0

我想完全拖动拖动,并通过监听MouseEvents移动,每次检查是否超出界限,如果是,则旋转,如果旋转后是,则不要移动(在计算之前存储以前的位置和旋转)。 – Vesper