Ich schreibe einen Code für App-Rechtecke. Mit der linken Maustaste kann ich Rechtecke einzeln verschieben (LMB).Vier Rechtecke gleichzeitig bewegen
Wie könnte ich alle vier Punkte eines Rechtecks gleichzeitig verschieben?
Das Prinzip der Operation: Wenn ich 1 Punkt mit einem LMB ziehen, folgen die anderen 3 gleichzeitig mit dem gleichen Offset.
Dies ist, wie Elemente konstruiert wurden:
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
}
}
hier ein Verfahren mit LMB zum Ziehen:
func mouseDragged(event: NSEvent) {
var point = self.convertPoint(event.locationInWindow, fromView: nil)
updateDragging(point)
}
I einen Code (oder Pseudo-Code) benötigen, das ermöglicht, Ich ziehe alle vier Punkte eines Rechtecks nach dem anderen.
Welche Art von Zwang stellen sich vor, Sie? Es gibt alle möglichen Arten, darüber nachzudenken, wie sich die anderen Punkte im Verhältnis zu dem bewegen, was Sie ziehen. (Das ist der Fall, über den du nachdenkst, oder? Versus beweg dich einfach - alle Punkte - auf die gleiche Weise - zur selben Zeit?) –
Ja, ich möchte, dass sich 3 andere Punkte in Bezug auf den Punkt bewegen Ich ziehe. – andy
OK. Sie sollten klären, auf welche Weise sie sich bewegen sollten. Im Gleichschritt? Als ob die Linien zwischen den Punkten durch elastische verbunden sind? Als ob die anderen Punkte Masse haben? Es gibt tatsächlich viele Effekte, die Sie erreichen könnten (von einfacher bis zu komplexer Physik), und Sie stellen sich wahrscheinlich einen bestimmten Effekt vor, aber Sie müssen detailliert beschreiben, was dieser Effekt ist, bevor Ihnen jemand helfen kann, herauszufinden, wie es erreichen. –