SpriteKit:克隆节点
SpriteKit: Cloning Nodes
所以我想制作一个代码块,每帧都会 运行 在 sprite 节点内。结果将是我在那里点击并创建一个气泡,然后使用正弦波将其漂浮起来。是否可以将代码写入气泡中?抱歉,如果这看起来含糊不清,我只是不确定该怎么称呼它。我能想到的最接近的事情是克隆,每个克隆 运行 每一帧都是相同的脚本。无论如何,这就是我现在所拥有的。
let bubble = SKSpriteNode(imageNamed:"bubble")
bubble.position.x = CGFloat(rand())*self.frame.width
bubble.position.y = -20
//Code for bubble to run each frame
self.addChild(bubble)
我认为您正在寻找的是enumerateChildNodesWithName
。当它被调用时,它将 运行 它包含在每个节点上的代码,其中包含您输入的名称。
bubble.name = "bubble"
如果您将泡泡命名为"bubble",它的所有子节点也将被命名为"bubble"。
enumerateChildNodesWithName("bubble"){node, stop in
let bubbleChild:SKSpriteNode = node as! SKSpriteNode
//Run the code telling them what to do here. You should make it so that
//it can figure out how to move the node a slight amount based on its position
}
您可以通过将它放在一个由定时器调用的函数中来调用它,并且定时器应该被频繁调用,比如每 0.017
秒(大约每秒 60 次),以便运动是光滑的。例如:
var timer = NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(0.017), target: self, selector: Selector("moveBubbles:"), userInfo: nil, repeats: true)
然后,创建定时器调用的函数:
func moveBubbles(timer: NSTimer!){
//enumerateChildNodesWithName here
}
有关 enumerateChildNodesWithName
here, and more information on NSTimer
here 的更多信息。
所以我想制作一个代码块,每帧都会 运行 在 sprite 节点内。结果将是我在那里点击并创建一个气泡,然后使用正弦波将其漂浮起来。是否可以将代码写入气泡中?抱歉,如果这看起来含糊不清,我只是不确定该怎么称呼它。我能想到的最接近的事情是克隆,每个克隆 运行 每一帧都是相同的脚本。无论如何,这就是我现在所拥有的。
let bubble = SKSpriteNode(imageNamed:"bubble")
bubble.position.x = CGFloat(rand())*self.frame.width
bubble.position.y = -20
//Code for bubble to run each frame
self.addChild(bubble)
我认为您正在寻找的是enumerateChildNodesWithName
。当它被调用时,它将 运行 它包含在每个节点上的代码,其中包含您输入的名称。
bubble.name = "bubble"
如果您将泡泡命名为"bubble",它的所有子节点也将被命名为"bubble"。
enumerateChildNodesWithName("bubble"){node, stop in
let bubbleChild:SKSpriteNode = node as! SKSpriteNode
//Run the code telling them what to do here. You should make it so that
//it can figure out how to move the node a slight amount based on its position
}
您可以通过将它放在一个由定时器调用的函数中来调用它,并且定时器应该被频繁调用,比如每 0.017
秒(大约每秒 60 次),以便运动是光滑的。例如:
var timer = NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(0.017), target: self, selector: Selector("moveBubbles:"), userInfo: nil, repeats: true)
然后,创建定时器调用的函数:
func moveBubbles(timer: NSTimer!){
//enumerateChildNodesWithName here
}
有关 enumerateChildNodesWithName
here, and more information on NSTimer
here 的更多信息。