2015-05-18 4 views
0

У меня есть проект, над которым я работал некоторое время. Я использую Sprite-Kit, но теперь хочу иметь возможность добавлять дочерний узел из быстрого файла, который отличается от файла GameScene.swift.Как добавить спрайт из другого .swift-файла?

Некоторые из основного кода от контроллера представления, который загружает GameScene показано здесь:

let skView:SKView = SKView() 
let theScene:SKScene = SKScene() 

class GameViewController: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     if let theScene = GameScene.unarchiveFromFile("GameScene") as? GameScene { 
      // Configure the view. 
      let skView = self.view as! SKView 
      skView.showsFPS = true 
      skView.showsNodeCount = true 

      /* Sprite Kit applies additional optimizations to improve rendering performance */ 
      skView.ignoresSiblingOrder = true 

      /* Set the scale mode to scale to fit the window */ 
      theScene.scaleMode = .ResizeFill //.AspectFill 
      var customSceneSize = CGSizeMake(2560, 1600) 
      theScene.size = customSceneSize 
      skView.presentScene(theScene) 
      makeFakeStuff() // prepares some sample data 
     } 
    } 

Обычно я добавляю спрайты в файле GameScene.swift с помощью «self.addChild». Это не будет работать из другого файла .swift, так что я пробовал:

theScene.addChild(flyingCell) 

и я попробовал:

skView.scene?.addChild(flyingCell) 

Эти выполнить без ошибок, но ничего не отображается на экране. Когда я пытаюсь использовать идентичный код спрайта и помещать его в файл GameScene.swift и использовать «self.addChild», он рисует его, поэтому код спрайта (не показан) кажется прекрасным (позиция, zPosition и т. Д.). Я также сделал «flyingCell» глобальной переменной, чтобы узнать, поможет ли это ... нет. Есть идеи?

+1

Подкласс вашего SKSpriteNode. – sangony

+0

Зачем это помогло? – Narwhal

+0

Таким образом, вы можете использовать свой собственный спрайт во всем своем проекте. – sangony

ответ

1

У меня было 2 вещи в коде.

Первая видна в моем вопросе: я должен был объявить «theScene» с помощью «вар», а не «пусть»

Вторая проблема была в моем gamescene, мне нужно поставить «theScene = сам»

Apple DTS помогла мне решить эту проблему.