The duration
财产为moveTo
在 a 内时不被跟随runBlock
,允许序列中的后续操作立即执行,而该操作应该只在之后执行duration
秒。
代码A(正确执行的序列):
let realDest = CGPointMake(itemA.position.x, itemA.position.y)
let moveAction = SKAction.moveTo(realDest, duration: 2.0)
itemB.runAction(SKAction.sequence([SKAction.waitForDuration(0.5), moveAction, SKAction.runBlock {
itemB.removeFromParent()
}]))
代码 B(序列未正确执行):
let badMoveAction = SKAction.runBlock {
let realDest = CGPointMake(itemA.position.x, itemA.position.y)
let moveAction = SKAction.moveTo(realDest, duration: 2.0)
itemB.runAction(moveAction)
}
itemB.runAction(SKAction.sequence([SKAction.waitForDuration(0.5), badMoveAction, SKAction.runBlock {
itemB.removeFromParent()
}]))
In Code A
, itemB
后被删除moveAction
完成(约 2 秒)。这是正确的顺序。
In Code B
, itemB
之前被删除badMoveAction
结束,意义itemB
永远不会离开原来的位置。就好像持续时间属性没有得到尊重Code B
.
我们怎样才能移动itemB
as in Code B
但确保序列中的下一个操作不会开始,直到badMoveAction
完成?