我正在爲應用程序構建矩形編寫代碼。我可以用鼠標左鍵單獨移動矩形點(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
好的。你應該澄清他們應該採取什麼行動。在鎖步?就好像兩點之間的連線是通過彈性連接的?就好像其他點有質量?實際上你可能會想要達到很多效果(從簡單到複雜的物理),而且你可能正在想象一種特定的效果,但是你需要詳細描述在人們能夠幫助你弄清楚實現這一目標。 –