我如何在 Swift 中永远重复一个动作? [英] How would I repeat an action forever in Swift?
问题描述
http://i.imgur.com/xkWTk9i.png 我已经得到了这个矩形从上到下.我的问题是我希望它每 2 秒重复一次,所以另一个矩形跟随它.我希望我的代码每 2 秒生成一次矩形,并让它像在飞扬的鸟中使用绿色管道一样重复.谢谢你.(我之前让这个工作,但我错误地删除了我的项目,并且无法弄清楚我是如何做到的.)我在使用 Spritekit 的 Swift 中.
http://i.imgur.com/xkWTk9i.png I already got this rectangle to go from top to bottom. The problem I have is that I want it to repeat every 2 seconds so another rectangle is following it. I want my code to spawn the rectangles every 2 seconds and have it repeat like in flappy bird does with the green pipes. Thank you. (I got this to work before but I deleted my project by mistake and cant figure out how I did it in the first place.) Im in Swift using Spritekit.
.
class GameScene: SKScene {
let sprite = SKSpriteNode(imageNamed: "Rectangle 12")
override func didMoveToView(view: SKView) {
self.addChild(sprite)
//run doAction function
doAction()
}
//movement of rectangle
func createRectangle() {
let moveToBottom = SKAction.moveByX(0, y: 0 - self.frame.size.width , duration:
NSTimeInterval (3.0))
let removeTheNode = SKAction.removeFromParent()
let moveAndRemovePipes = SKAction.sequence([moveToBottom, removeTheNode])
let repeatAction = SKAction.repeatActionForever(moveAndRemovePipes)
sprite.xScale = 1
sprite.yScale = 1
sprite.position = CGPoint(x:0,y:0)
sprite.runAction(repeatAction)
}
//spawn multiple rectangles after 3 or 4 seconds
func doAction() {
let generateRectangles = SKAction.sequence([
SKAction.runBlock(self.createRectangle),
SKAction.waitForDuration(NSTimeInterval(3.0))])
let endlessAction = SKAction.repeatActionForever(generateRectangles)
runAction(endlessAction)
}
}
推荐答案
您可以使用 NSTimer
重复执行函数.
You can repeat the function execution with NSTimer
.
override func didMoveToView(view: SKView) {
self.addChild(sprite)
var timer = NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "doAction", userInfo: nil, repeats: true)
}
这将每 2 秒重复执行一次函数.
This will repeat your function execution for every 2 second.
你也可以这样做:
override func didMoveToView(view: SKView) {
self.addChild(sprite)
runAction(SKAction.repeatActionForever(SKAction.sequence([SKAction.runBlock(doAction), SKAction.waitForDuration(1.0)])))
}
这篇关于我如何在 Swift 中永远重复一个动作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!