我正在使用SKAction序列来延迟在某些情况下产生节点。当laneFire为true时,我不希望延迟发生。但如果不是那么我希望延迟发生。所以我创建了一个名为spawnAction的SKAction。在spawnAction里面我添加了孩子。然后我将spawnAction放入我的序列中。我把它放在我的序列中的waitAction之后,以便在我的节点生成之前创建一个延迟。但是,我的节点的产生不会延迟。它在屏幕上产生并在执行moveAction之前等待1.5秒。
另外,鼠标!是一个SKSpriteNode()和movingObjects也是一个SKSpriteNode()
var action = SKAction()
let spawnAction = SKAction(movingObjects.addChild(mouse!))
let actionDone = SKAction.removeFromParent()
if laneFire == true
{
action = SKAction.moveToY(self.size.height, duration: duration)
}
else
{
let waitAction = SKAction.waitForDuration(1.5)
let moveAction = SKAction.moveToY(self.size.height, duration: duration)
action = SKAction.sequence([waitAction, spawnAction, moveAction])
}// end of laneFire if statement
mouse!.runAction(SKAction.sequence([action, actionDone]))
mouseCount++
答案 0 :(得分:0)
以下行是可疑的(我不确定编译器为什么会接受它)
让spawnAction = SKAction(movingObjects.addChild(mouse!))
如果鼠标最初未被隐藏,它将立即被添加到移动对象节点,并在执行操作之前出现。
如果你最初隐藏鼠标节点,你可以使spawnAction成为一个unHide():
mouse!.hidden = true
movingObjects.addChild(mouse!)
let spawnAction = SKAction.unHide()
...