Как я могу удалить свой SKSpriteNode
через 5 секунд в моей функции, как это. Я попытался с NSTimer
называется функ удалить мои BonusSprite
, но после 5 секунд моей аварии приложения:удалить SKSpriteNode через 5 секунд
let timerApparitionBonus = NSTimer.scheduledTimerWithTimeInterval(13, target: self, selector: Selector("ApparitionBonus"), userInfo: nil, repeats: true)
}
func ApparitionBonus() {
var BonusApparitionX = UInt32(self.frame.size.width)
var BonusApparitionY = UInt32(self.frame.size.height)
BonusApparitionX = arc4random() % BonusApparitionX
BonusApparitionY = arc4random() % BonusApparitionY
BonusSprite.position = CGPointMake(CGFloat(BonusApparitionX),CGFloat(BonusApparitionY))
BonusSprite.setScale(0.8)
self.addChild(BonusSprite)
}
EDIT:
Это мой код от DidMoveToView
функционировать, которые удалить мой спрайт.
override func didMoveToView(view: SKView) {
physicsWorld.contactDelegate = self
//BackGround
self.scene?.backgroundColor = UIColor.blackColor()
self.addChild(SKEmitterNode(fileNamed: "MyParticle")!)
self.scene?.size = CGSize(width: 640, height: 1136)
//Placement du Vaisseau :
Vaisseau.setScale(2)
Vaisseau.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2)
Vaisseau.physicsBody = SKPhysicsBody(rectangleOfSize: Vaisseau.size)
Vaisseau.physicsBody?.affectedByGravity = false
Vaisseau.physicsBody?.categoryBitMask = PhysicsCategories.Vaisseau
Vaisseau.physicsBody?.contactTestBitMask = PhysicsCategories.Meteorites
Vaisseau.physicsBody?.contactTestBitMask = PhysicsCategories.Bonus
Vaisseau.physicsBody?.dynamic = false
self.addChild(Vaisseau)
//Timer créer enemis
CreationEnemisTimer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("CreationMeteorites"), userInfo: nil, repeats: true)
//Score
timerScore = NSTimer.scheduledTimerWithTimeInterval(0.7, target: self, selector: Selector("ScoreUpper"), userInfo: nil, repeats: true)
ScoreLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.frame.size.width/3, height: 20))
ScoreLabel.center = CGPoint(x : self.frame.size.width/2,y : self.frame.size.height/4)
ScoreLabel.text = "Score : \(Score)"
ScoreLabel.backgroundColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 0.3)
ScoreLabel.textColor = UIColor.whiteColor()
self.view?.addSubview(ScoreLabel)
//Aparition des Bonus (timer)
let myFunction = SKAction.runBlock({self.ApparitionBonus()})
let wait = SKAction.waitForDuration(5)
let remove = SKAction.runBlock({self.removeBonus()})
self.runAction(SKAction.sequence([myFunction, wait, remove]))
}
func ApparitionBonus() {
var BonusApparitionX = UInt32(self.frame.size.width)
var BonusApparitionY = UInt32(self.frame.size.height)
BonusApparitionX = arc4random() % BonusApparitionX
BonusApparitionY = arc4random() % BonusApparitionY
BonusSprite.position = CGPointMake(CGFloat(BonusApparitionX),CGFloat(BonusApparitionY))
BonusSprite.setScale(0.8)
BonusSprite.physicsBody?.categoryBitMask = PhysicsCategories.Bonus
BonusSprite.physicsBody?.contactTestBitMask = PhysicsCategories.Vaisseau
}
func removeBonus() {
BonusSprite.removeFromParent()
}
Вы также можете использовать 'SKAction.fadeOutWithDuration (sec: NSTimeInterval)' вместо 'SKAction.removeFromParent()', если вы хотите, чтобы он исчезал, а не исчезал внезапно. Он автоматически вызывает 'removeFromParent()' после того, как он анимировал 'alpha'. – Gliderman
Я думаю, что вы забудете() после себя. ApparitionBonus и self.removeSprite? Поскольку у меня есть некоторые ошибки в моей компиляции –
И когда я пытаюсь использовать свой код, у меня есть ошибка, когда мой бонус появляется так: 2015-10-22 20: 40: 19.801 SpaceSurvival [1828: 85702] *** Прекращение приложения из-за неотображаемого exception 'NSInvalidArgumentException', причина: 'Принято для добавления SKNode, у которого уже есть родитель: name:' (null) 'texture: [ «Bonus.png» (100 x 100)] позиция: {243, 606 } scale: {0.80, 0.80} size: {80, 80} anchor: {0.5, 0.5} вращение: 0.00 ' *** Первый стек вызовов броска: –