2017-02-04 3 views
3

Was ich willSKScene zu UIViewController Hinzufügen gibt mir Fehler

Einen unendlichen Hintergrund, die Objekte fügt zufällig (in meinem Fall kleine Sterne) in der Mitte des Bildschirms. Dann müssen diese Objekte mit einer gewissen Geschwindigkeit den Bildschirm verlassen. Auf diese Weise möchte ich dem Benutzer das Gefühl vermitteln, dass er sich "in den Weltraum" bewegt, indem er Sterne sieht, die er passiert.

Was ich

Eine einzelne Ansicht Anwendung mit einer UIViewController Klasse.

Problem

denke ich, der richtige Weg, eine SKScene hinzuzufügen ist, die die Aufgabe Ich will tun wird. Das Hinzufügen der SKScene-Klasse neben UIViewController gibt mir jedoch einen Fehler: "mehrfache Vererbung von den Klassen 'UIViewController' und 'SKScene'". Ich muss die SKScene zu einem Existenz UIViewController hinzufügen, um einige wichtige Funktionen aufzurufen. Bei der Suche auf Stackoverflow bin ich auf folgendes gestoßen: SKScene in UIViewController Aber ich kann bestimmte Funktionen wie "override func update (aktuelle Zeit: CFTimeInterval) {}" nicht aufrufen, weil die Antwort nicht zeigt, wie man die SKScene-Klasse implementiert. Diese Antwort löscht die gesamte UIViewController-Klasse: Adding an SKScene to a UIViewController?. Die anderen Antworten helfen mir nicht.

Frage

Was ist der richtige Weg, um eine SKScene Klasse zu einer Existenz UIViewController Klasse hinzuzufügen, kann ich so erreichen, was ich will?

Edit: Kam über 9gag und genau das, was ich will: http://9gag.com/gag/aWmZAPZ Die Sterne kommen von links oben, die Respawn sollte in der Mitte des Bildschirms in meiner App sein.

+0

Als Antwort auf die Frage Ihres Link erklärt, kann man nicht direkt eine SKScene zu einem UIView hinzuzufügen, ** SKScene ist überhaupt keine Ansicht **, um sie anzuzeigen, müssen Sie sie zuerst zu einem SKView hinzufügen. –

+0

Ok, aber wie wäre es mit dem Hinzufügen eines SKView zu einem bestehenden uiviewcontroller? Ist das möglich? – Petravd1994

Antwort

0

Sicher ist es möglich. Statt direkt SKScene zu UIViewController hinzufügen, müssen Sie SKScene von SKView zuerst verziehen, und fügen Sie dann SKView zu UIViewController

import UIKit 
import SpriteKit 


class GameViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Configure the view. 
     // Core:- convert the base view/UIView of UIViewController to SKView 
     let rootView = self.view as! SKView 
     //   skView.showsFPS = true 
     //   skView.showsNodeCount = true 

     /* Sprite Kit applies additional optimizations to improve rendering performance */ 
     rootView.ignoresSiblingOrder = true 
     rootView.frameInterval = 1 

     //init your SKScene 
     let rootMenuScene = YourScene(size: rootView.bounds.size) 
     rootMenuScene.scaleMode = .resizeFill 

     //warp in SKView 
     rootView.presentScene(rootMenuScene) 
    } 
    ... 

} 
Verwandte Themen