So habe ich eine Klasse, die eine Unterklasse von SKSpriteNode
ist und ich möchte es benachrichtigt werden, wenn das übergeordnete Element oder Szene, wenn es keinen übergeordneten Knoten hat, so dass ich die Größe des Containers kennen . Ich habe versucht, Sie folgendermaßen vorgehen:Erkennen, wenn das übergeordnete Element des Knotens ändert
class MyNode: SKSpriteNode {
override var parent: SKNode? {
didSet {
//code here
}
}
override var scene: SKScene? {
didSet {
//code here
}
}
}
Allerdings habe ich die Fehlermeldung anzeigt, Cannot observe read-only property 'parent'; it can't change
und Cannot observe read-only property 'scene'; it can't change
, die mich glauben macht, dass es private Werte irgendwo und diese Eigenschaften werden berechnet. Ich weiß nicht, was ich sonst noch tun soll, außer dass ich jedesmal manuell eine Funktion aufruft, wenn ich meinen Knoten zu etwas anderem hinzufüge, aber ich finde, das ist eine hässliche Lösung. Vielen Dank für Ihre Hilfe. Tut mir leid, wenn die Lösung offensichtlich ist. Ich bin ziemlich neu in SpriteKit.
Dies ist die beste Lösung: "parent" ist schreibgeschützt, es gibt keinen Setter, so dass Sie es nicht mit 'didSet' beobachten können. Aber es ist die Methode 'addChild()', die indirekt bewirkt, dass sich der Wert von 'Eltern' ändert. –
Warum würden Sie sich überhaupt die Mühe machen, wenn der einzige Punkt die Containergröße ist? containerSize muss nur eine Eigenschaft sein 'var containerSize: CGSize {get {return parent? .size ?? CGSizeZero}} ' – Knight0fDragon
@ Knight0fDragon Ich habe eine Eigenschaft Beobachter darauf, die die Aktionen, die ich will – user3128464