etxra-Parameter in init Funktion einer abgeleiteten Klasse nicht erreichbar

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • etxra-Parameter in init Funktion einer abgeleiteten Klasse nicht erreichbar

    Hallo zusammen!
    Jetzt, wo mein Mac ausnahmsweise mal funktioniert, kann ich fleißig weiter Swift lernen (und ich muss da scheinbar noch viel lernen) und bin direkt auf ein neues Problem gestoßen.

    Ich hoffe, jemand kann helfen:

    Ich habe diese Klasse von SKSpriteNode abgeleitet:
    Es geht mir darum, einen Konstruktor mit dem zusätzlichen Parameter "ParentScene" zu haben.

    Wenn ich einneues Objekt zuweisen möchte, wird dieser Parameter jedoch nicht angezeigt. Händisches Eintrag bringt die Meldung: "Extra argument "parentScene" in call"

    Aufruf:

    Quellcode

    1. let Krone = scene.childNode(parentScene: scene, withName: "Krone1") as TouchableSpriteNode

    Klasse:

    Quellcode

    1. class TouchableSpriteNode : SKSpriteNode
    2. {
    3. var Scene: SKScene?
    4. init(withName: String, parentScene: SKScene) {
    5. let texture = SKTexture(imageNamed: withName)
    6. super.init(texture: texture, color: SKColor.clear, size: texture.size())
    7. Scene = parentScene
    8. }
    9. required init?(coder aDecoder: NSCoder) {
    10. fatalError("init(coder:) has not been implemented")
    11. }
    12. override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
    13. for touch in touches {
    14. let position = touch.location(in: Scene! )
    15. self.position.x = position.x
    16. self.position.y = position.y
    17. }
    18. }
    19. }
    Alles anzeigen

    Danke für die Mühen mit einem blutigen Anfänger :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Manuel Lammers ()

  • Für mein aktuelles Vorhaben hat sich das Problem erledigt, da ich einen anderen Lösungsweg gewählt habe. Trotzdem würde mich als Swift Anfänger interessieren, warum der Parameter nicht angezeigt wird.
  • Auch auf die Gefahr, mich wahnsinnig zu blamieren (ja, ich habe Swift noch immer nicht gelernt):

    Für mich sieht Dein Code oben so aus, aus würdest Du nur per Methode childNode:withName der Szene zugreifen und den gefundenen Knoten dann stumpf auf TouchableSpriteNode casten. Das heisst aber noch lange nicht, dass dieser eine Instanz der Klasse TouchableSpriteNode ist. Letztlich ist die verwendete Methode ja gar kein Initializer.

    Du müsstest also beim Instanzieren Deine eigene Klasse verwende, dann hat die oben referenzierte Instanz auch ein Property ParentScene. An dem Aufruf Methode chilNode zum Finden der Instanz ändert sich dadurch erst einmal nichts. Es sei denn, Du würdest diese überschreiben und den zusätzlichen Parameter einführen.

    Sorry, wenn das verworren klang, schieb's auf die Hitze, Mattes

    ... bei 32°C in seinem Arbeitszimmer
    Diese Seite bleibt aus technischen Gründen unbedruckt.