2017-02-04 11 views
3

Что я хочуДобавления SKScene к UIViewController дает мне ошибки

Бесконечного фона, который случайным образом добавляет объекты (в моем случае маленьких звезд) до середины экрана. Затем эти объекты должны двигаться с экрана с определенной скоростью. Таким образом, я хочу дать пользователю ощущение, что они движутся «в космос», видя звезды, которые они проходят.

То, что я

одно приложение, вид с классом UIViewController.

Проблема

Я думаю, что правильный путь, чтобы добавить SKScene, который будет делать задачу я хочу. Однако добавление класса SKScene рядом с UIViewController дает мне ошибку: «множественное наследование от классов« UIViewController »и« SKScene ». Мне нужно добавить SKScene к существующему UIViewController, чтобы вызвать некоторые важные функции. При поиске в Stackoverflow я столкнулся с этим: SKScene in UIViewController Но я не могу вызывать определенные функции, такие как «переопределить func update (текущее время: CFTimeInterval) {}», потому что в ответе не показано, как реализовать класс SKScene. Этот ответ удаляет весь класс UIViewController: Adding an SKScene to a UIViewController?. Другие ответы мне не помогают.

Вопрос

Что такое правильный способ добавления класса SKScene к классу UIViewController существования, так что я могу сделать то, что я хочу?

Редактировать: Пришло через это на 9gag и его точно то, что я хочу: http://9gag.com/gag/aWmZAPZ Эти звезды идут с левого верха, респауна должна быть посередине экрана в моем приложении.

+0

В качестве ответа на вопрос о вашей ссылке объясняет, вы не можете напрямую добавить в SKScene к UIView, ** SKScene - это совсем не просмотр **, чтобы отобразить его, вы должны сначала добавить его в SKView. –

+0

Хорошо, но как насчет добавления SKView в существующий uiviewcontroller? Это возможно? – Petravd1994

ответ

0

Конечно, это возможно. Вместо того, чтобы непосредственно добавить SKScene к UIViewController, вам нужно деформировать SKScene по SKView первым, а затем добавить SKView к 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) 
    } 
    ... 

} 

 Смежные вопросы

  • Нет связанных вопросов^_^