Ich arbeite an einer App und ich schrieb einen großen Teil einer SKScene
in einer einzigen Klasse. Es funktioniert gut, aber als ich im vergangenen Semester einen (Java) Kurs besucht habe, scheint es gängige Praxis zu sein, es in viele Klassen zu unterteilen.Wo sollte ich meine Funktionen einstellen?
Genauer gesagt, meine (SpriteKit) App enthält eine Katze und eine Maus und nach Verlauf die Bearbeitung, ich entscheide, dass stattdessen alle ihre Informationen in der SKScene
zu enthalten, habe ich einen Teil davon in mehrere Klassen trennen sollte (a Player
Super mit Cat
und Unterklassen), die jeweils ihre relevanten Informationen (wie x- und y-Position) und Funktionen (wie moveCat
) mit nur Szenenbezogenen Funktionen und Informationen in der Klasse Scene enthalten.
Das Problem liegt im Inhalt der Funktionen.
Besonders eine der Funktionen, pathBlocked
(die überprüft, ob es irgendwelche Hindernisse sind die gewünschte Bewegungsbahn zu blockieren) verwendet eine Menge von Informationen, die nicht sinnvoll wäre, innerhalb des Player
Objekt (zB alle Infos enthalten über die Barrieren auf dem Brett und wie viel Käse wurde gesammelt).
Ich kann nicht nur pathBlocked
als Scene
Funktion verlassen, weil es eine Funktion ist, die die Katze (catAI
), die pathBlocked
zu navigieren verwendet gehören soll. Wenn es eine Methode der Szene ist, wird es nicht funktionieren. Ich müsste jedes Mal ein Szenenobjekt instanziieren, wenn ich pathBlocked
anrufen wollte.
Sollte ich nur vergessen, über die Herstellung der Cat
und Mouse
Klassen oder sollte ich die Player
Klasse mit Informationen füllen, die nicht ganz gehört?
oder gibt es eine dritte Option, an die ich nicht denke?
Wenn Sie ein Code-Schnipsel benötigen, könnte ich etwas davon hinzufügen.
Danke!
'pathBlocked' scheint mir als eine Methode der Szene am geeignetsten zu sein. – Alexander
vergessen zu erwähnen, hat die Katze eine 'catAI' Methode, die' pathBlocked' aufruft. Wenn es eine Methode der Szene ist, wird es nicht funktionieren. Müsste ich nicht jedes Mal ein Szenenobjekt instantiieren, wenn ich 'pathBlocked' aufrufen wollte? –
Ihr cat-Objekt kann eine schwache Referenz auf seine Elternszene halten und nach solchen Informationen abfragen. – Alexander