2016-05-27 5 views
1

Я несколько SKScene сделаны в интерфейсе строителе, в котором я расположил несколько спрайтов в части SKScene, которая видна на экранеСкрыть узел в SKScene в интерфейсе строителе

Я хочу некоторые спрайты только появляются позже, так Я начинаю скрыть их в начале метода didMoveToView.

override func didMoveToView(view: SKView) 
{ 
     // Reading of the sprites created in the SKScene in the interface builder 
    BackgroundLayer = self.childNodeWithName("BackgroundLayer") as! SKSpriteNode 
    LettreB = self.childNodeWithName("B0") as! SKSpriteNode 
    LettreB.hidden = true 
    LettreR = self.childNodeWithName("R0") as! SKSpriteNode 
    LettreR.hidden = true 
    LettreI = self.childNodeWithName("I0") as! SKSpriteNode 
    LettreI.hidden = true 
} 

Проблема у меня в том, что при запуске приложения я очень кратко вижу все спрайты, прежде чем они будут скрыты.

Даже если я устанавливаю blendfactor 1 (и BlendMode Альфе) в интерфейсе строителя, спрайты - которые потом не видно больше в интерфейсе строителя - очень короткое время появляются то исчезают при запуске приложения

Is есть ли способ избежать этого, кроме как помещая спрайты за пределы видимой области и перемещая их, когда мне нужно, чтобы они появились? Должен ли я помещать код выше в другое место до того, как будет вызван метод didMoveToView?

Примечание: эта проблема возникает только при запуске приложения непосредственно с устройства, а не при запуске приложения через Xcode, по некоторым причинам, по моему мнению.

ответ

1

Обычно прописные свойства назвать это рассматриваются как плохое отношение, вы должны использовать BackgroundLayer или lettreB

Такого рода изменение может быть сделать это по-разному (в методах SKScene инициализации, или путем настройки вашего SKSpriteNode и изменить его inits), один из них находится в предыдущем SKScene или UIViewController где вы создаете сцену и называют его:

override func viewDidLoad() { 
     super.viewDidLoad() 
     print("---") 
     print("∙ \(NSStringFromClass(self.dynamicType))") 
     print("---") 
     let skView = self.view as! SKView 
     if let scene = MyScene(fileNamed:"MyScene") { 
      var letter = scene.childNodeWithName("LettreB") as! SKSpriteNode //for example 
      letter.hidden = true //for example 
      skView.presentScene(scene) 
     } 
} 
+1

Спасибо за указание в правильном направлении. Я попробую во время SKScene init, который кажется хорошим подходом. – jbegood

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

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