我有几个按钮(SKSpriteNodes),我试图循环和动画,每个按钮之间有一个小延迟。我的代码编译,但是当我运行它时 - 我只得到一个白屏和崩溃这个错误:"来自调试器的消息:由于内存问题终止"。这是我的代码:
var sequence = SKAction.sequence([animationUp, animationDown])
runAction(SKAction.repeatActionForever(SKAction.sequence([
SKAction.runBlock({
button1.runAction(sequence)
SKAction.waitForDuration(0.5)
button2.runAction(sequence)
SKAction.waitForDuration(0.5)
button3.runAction(sequence)
SKAction.waitForDuration(0.5)
}),
])))
所以我想要完成的是在每个按钮上的向上/向下动画我在屏幕上绘图,每个按钮之间有0.5秒的延迟。动画应该永远运行,直到我更改当前屏幕。我没有问题同时动画这些按钮,但我真的想添加一个统一的延迟,以便它们不会同时生成动画。有什么想法吗?
答案 0 :(得分:1)
let waitAction = SKAction.waitForDuration(0.5)
let movementAction = SKAction.sequence([animateUp, animateDown])
let button1Block = SKAction.runBlock({
button1.runAction(movementAction)
})
let button2Block = SKAction.runBlock({
button2.runAction(movementAction)
})
let button3Block = SKAction.runBlock({
button3.runAction(movementAction)
})
let sequence = SKAction.sequence([button1Block,waitAction,button2Block, waitAction, button3Block, waitAction])
runAction(SKAction.repeatActionForever(sequence))
答案 1 :(得分:0)
我不确定SKAction.sequence如何启动/销毁,但可能你的.repeatActionForever(..)中的循环会创建并销毁对象,而在允许循环完成之前不会释放内存。
尝试在autoreleasepool {..}块中运行内部runAction块:
autoreleasepool {
runAction ...
}
但有一种情况我们确实需要自动释放,就是我们 在方法范围中创建许多对象并希望释放它们 更早。当这些物体转向压力时非常有用 在记忆中。