2014-12-04 1 views
6

Ich versuche SKScene * scene = [GameScene sceneWithSize:skView.bounds.size]; in swift zu übersetzen aber ich habe den FehlerviewWillLayoutSubviews in Swift

'sceneWithSize' ist nicht verfügbar: Verwendung Objektbau 'SKScene (Größe :).

Ich verwende viewWillLayoutSubviews und die viewDidLoad() Ausschneiden, weil es nicht richtig Abmessungen für die Bildschirmabmessungen des Geräts ich wähle nicht geben. Es lässt mich tatsächlich fragen, warum viewDidLoad() überhaupt existiert?

override func viewWillLayoutSubviews() { 
    super.viewWillLayoutSubviews(); 
    let skView = self.view as SKView; 
    if skView.scene != nil { 
     skView.showsFPS = true; 
     skView.showsNodeCount = true; 
     skView.showsPhysics = true; 
     // Create and configure the scene 

     let scene:SKScene = GameScene.sceneWithSize(skView.bounds.size); // ERROR MESSAGE! 
     // Objective-C code in next 2 lines 
     // SKScene * scene = [GameScene sceneWithSize:skView.bounds.size]; 
     // scene.scaleMode = SKSceneScaleModeAspectFill; 

     // Present Scene 
     skView.presentScene(scene) 
    } 
} 
+0

Vielleicht nur 'Let scene = SKScene (Größe: skView.bounds.size) ' – Ian

Antwort

0

Wie der Fehler sagt, ist die Funktion, die Sie versuchen zu verwenden, nicht verfügbar. Sie sollten stattdessen den Konstruktor verwenden init(size size: CGSize):

let scene = SKScene(size: skView.bounds.size) 

Beachten Sie auch, dass die :SKScene nicht notwendig ist, wie der Typ aus dem Konstruktor offensichtlich. Wenn Sie die documentation öffnen, werden Sie sehen, dass +sceneWithSize: nicht für Swift verfügbar ist.

+0

Ich habe alle Zeilen in viewDidLoad außer super.viewDidLoad() auskommentiert und in viewWillLayoutSubviews() mit Ihren Vorschlägen, aber jetzt sehe ich nichts im Simulator. In Objective C habe ich immer GameScene sceneWithSize angegeben, aber ich gehe davon aus, dass der Compiler das nicht weiß, da ich seme scene = SKScene (size: skView.bounds.size) gesagt habe und es keinen Hinweis auf GameScene gibt. Nur eine Annahme. Irgendwelche Ideen, wie ich das beheben kann? – baskInEminence

4

Versuche

let scene:SKScene = GameScene.sceneWithSize(skView.bounds.size); 

von

let scene:SKScene = GameScene(size: skView.bounds.size); 

Hoffnung zu ändern, dies hilft;)

0

Wenn eine Grenze Änderung ist die Ansicht, die Ansicht, die die Position seiner Subviews einstellt. Ihr Ansichts-Controller kann diese Methode überschreiben, um Änderungen vorzunehmen, bevor die Ansicht ihre Untersichten ausgibt. Die Standardimplementierung dieser Methode tut nichts.