Ich habe Spritekit gelernt, aber ich habe einige Schwierigkeiten mit super.init. Ich komme von einem Hintergrund von Java und fragte mich, warum ich den Fehler empfing: "Super.Init mehrfach in Initialisierung aufgerufen"Super.Init mehrmals im Initialisierer aufgerufen
Was ich versuche zu erreichen, ist ein Konstruktor, der die richtige ruhende Textur ordnet zu dem Zeichen, während auch das Textur-Array eingerichtet wird, so dass ich es aufrufen kann, ohne sich darum kümmern zu müssen, Werte zu übergeben.
Ich habe in der Dokumentation nachgeschaut, aber ich denke, mein Kaffeevolumen ist erschöpft, da ich wirklich keinen Sinn mehr daraus machen konnte, warum super.init sich selbst nennen könnte. Jede Hilfe, die Sie zur Verfügung stellen können, wäre sehr willkommen. Ich habe nach ähnlichen Fragen gesucht, konnte aber keine finden. Wenn ich mich irrte, um dies zu posten, würde ein Link zu der Antwort gleichermaßen geschätzt werden.
class CharClass : SKSpriteNode
{
var textureAtlas = SKTextureAtlas()
var textureArray = [SKTexture]()
init() {
textureAtlas = SKTextureAtlas(named:"Org")
//likely should be a passed variable instead
for i in 1 ... textureAtlas.textureNames.count{
var Name = String();
if(i<10)
{
Name = "cWalk000\(i).png"
}
else
{
Name = "cWalk00\(i).png"
}
textureArray.append(SKTexture(imageNamed: Name));
let texture = SKTexture(imageNamed: textureAtlas.textureNames[0]);
super.init(texture:texture, color: UIColor.clear, size:texture.size())
self.size = CGSize(width:71 , height: 131);
self.position = CGPoint(x: -282.52, y:-141.5);
self.run(SKAction.repeatForever(SKAction.animate(with: textureArray, timePerFrame: accelSpeed)))
}
}
Das Problem ist, dass Sie 'super.init' innerhalb einer Schleife aufrufen. Tu das nicht. Ruf 'super.init' nur einmal an. – rmaddy
Danke! Ich werde etwas schlafen sehen, da ich vergessen habe, meine Schleife zu schließen – Blundabus