我正在为应用程序构建矩形编写代码。我可以用鼠标左键单独移动矩形点(LMB)。同时移动四个矩形的点
我怎样才能同时移动一个矩形的所有四个点?
操作原理:如果我用一个点拖动1点,其他3点将同时按照相同的偏移量跟随它。
这是如何元件构建:
enum RectPoint {
case point1(point: CGPoint)
case point2(point: CGPoint)
case point3(point: CGPoint)
case point4(point: CGPoint)
func pointCoord() -> [CGPoint] {
switch self {
case .point1(let point): return [point]
case .point2(let point): return [point]
case .point3(let point): return [point]
case .point4(let point): return [point]
}
}
..........................
..........................
}
class SpecialView: NSView {
var array: [RectPoint] = []
private var trackVertex: RectPoint?
private var trackVertexIndex: Int?
private var trackElementIndex: Int?
..........................
..........................
private func updateDragging(point: CGPoint) {
guard let trackVertex = self.trackVertex,
let trackVertexIndex = self.trackVertexIndex,
let trackElementIndex = self.trackElementIndex
else {
return
}
let newVertex = trackVertex.debugReleaseChecking(point,
atElementIndex: trackElementIndex)
array[trackVertexIndex] = newVertex
self.needsDisplay = true
}
}
下面是用于与LMB拖动方法:
func mouseDragged(event: NSEvent) {
var point = self.convertPoint(event.locationInWindow, fromView: nil)
updateDragging(point)
}
我需要一个代码(或伪代码),其允许我一次拖动任何矩形的所有四个点。
你想象什么样的约束:
的线沿线的东西吗?对于其他点与您所拖动的点相比如何移动,有各种不同的思考方式。 (这是你正在考虑的情况,对吗?与同一时间只是同时移动所有点?) –
是的,我希望其他3个点相对于点移动我在拖。 – andy
好的。你应该澄清他们应该采取什么行动。在锁步?就好像两点之间的连线是通过弹性连接的?就好像其他点有质量?实际上你可能会想要达到很多效果(从简单到复杂的物理),而且你可能正在想象一种特定的效果,但是你需要详细描述在人们能够帮助你弄清楚实现这一目标。 –