这不是答案,而是我尝试过的事情的集合。
我真的对这段代码很好奇。我尝试了一下,但没有成功。我更改了更新方法,将点放在随机位置并且它有效:
所以我有一个问题。为什么代码不能从当前位置更新,或者这是一个转移注意力的事情?
override func update(currentTime: CFTimeInterval) {
let width = self.scene!.frame.size.width
let height = self.scene!.frame.size.height
for oneCell in self.canvasNode.children as! [SKSpriteNode] {
let x: CGFloat = CGFloat(arc4random_uniform(UInt32(width)))
let y: CGFloat = CGFloat(arc4random_uniform(UInt32(height)))
oneCell.position = CGPointMake(x, y)
}
self.canvasTexture = self.view!.textureFromNode(self.canvasNode)
self.canvasSprite.texture = self.canvasTexture
}
好吧,我一直在玩这个,这很有效,只需获取一个随机值并将其添加到该位置......
override func update(currentTime: CFTimeInterval) {
let width = self.scene!.frame.size.width
let height = self.scene!.frame.size.height
for oneCell in self.canvasNode.children as! [SKSpriteNode] {
let x2: CGFloat = CGFloat(arc4random_uniform(UInt32(10)))
let y2: CGFloat = CGFloat(arc4random_uniform(UInt32(10)))
let x:CGFloat = oneCell.position.x - x2
let y:CGFloat = oneCell.position.y - y2
let point = CGPointMake(x, y)
oneCell.position = point
}
self.canvasTexture = self.view!.textureFromNode(self.canvasNode)
self.canvasSprite.texture = self.canvasTexture
}
现在我认为这与编译器有关,因为这是有效的:
override func update(currentTime: CFTimeInterval) {
let width = self.scene!.frame.size.width
let height = self.scene!.frame.size.height
var x3:CGFloat = 10.0
var y3:CGFloat = 10.0
for oneCell in self.canvasNode.children as! [SKSpriteNode] {
let x:CGFloat = oneCell.position.x - x3
let y:CGFloat = oneCell.position.y - y3
let point = CGPointMake(x, y)
oneCell.position = point
x3 += 0.01
}
self.canvasTexture = self.view!.textureFromNode(self.canvasNode)
self.canvasSprite.texture = self.canvasTexture
}
更多调查,有趣的是,如果您使用值 1.3 并运行代码,您可以看到点移动一次。 (http://llvm.org/docs/LangRef.html#simple-constants http://llvm.org/docs/LangRef.html#simple-constants)
override func update(currentTime: CFTimeInterval) {
let width = self.scene!.frame.size.width
let height = self.scene!.frame.size.height
for oneCell in self.canvasNode.children as! [SKSpriteNode] {
let x:CGFloat = oneCell.position.x - 1.3
let y:CGFloat = oneCell.position.y - 1.3
let point = CGPointMake(x, y)
oneCell.position = point
}
self.canvasTexture = self.view!.textureFromNode(self.canvasNode)
self.canvasSprite.texture = self.canvasTexture
}
像 50.3333333333 这样的数字显示出明显的震动,但随后似乎停止了。