2016-04-03 2 views
3

Я пытаюсь добавитьChild через 2 секунды, когда пользователь коснулся экрана (он внутри touchhesBegan), но он не работает. Я что-то делаю неправильно?addChild через 2 секунды

//show myLabel after 2 seconds 
self.myLabel.position = CGPoint(x: self.frame.width/1.1, y: self.frame.height/2) 
self.myLabel.text = "0" 
self.myLabel.zPosition = 4 

self.myLabel.runAction(SKAction.sequence([SKAction.waitForDuration(2.0), SKAction.runBlock({ 
    self.addChild(self.myLabel) 
)])) 

ответ

4

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

self.runAction(SKAction.sequence([SKAction.waitForDuration(2.0), SKAction.runBlock({ 
    self.addChild(self.myLabel) 
})])) 

Или лучше:

self.runAction(SKAction.waitForDuration(2)) { 
    self.addChild(self.myLabel) 
} 

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

+0

Второй работал, но я должен был изменить некоторые вещи (проинструктированы Xcode). В итоге это было: 'self.runAction (SKAction.waitForDuration (2.0), завершение: {self.addChild (self.myLabel)})' – Luiz

+0

Кстати, спасибо! =) – Luiz

+0

Добро пожаловать! Я отредактировал свой ответ после тестирования в Xcode. Если ответ вам поможет, пожалуйста, рассмотрите возможность голосования и/или принимайте его :) – smallfinity

-1

Вы можете объявить эту функцию, где вы хотите

public func delay(delay:Double, closure:()->()) { 
    dispatch_after(
     dispatch_time(
      DISPATCH_TIME_NOW, 
      Int64(delay * Double(NSEC_PER_SEC)) 
     ), 
     dispatch_get_main_queue(), closure) 
} 

и с использованием в качестве:

delay(2.0) { 
     self.addChild(self.myLabel) 
    } 
+0

Невозможно посетить SpriteKit http://stackoverflow.com/a/23978854. – Whirlwind

+0

@ Вихрь, извините, я забыл об этом. –