Swift SKAction运行块不';I don’我好像没有按预期工作

Swift SKAction运行块不';I don’我好像没有按预期工作,swift,sprite-kit,stack-overflow,skaction,Swift,Sprite Kit,Stack Overflow,Skaction,当这个动作运行时,当我打印它时,足迹文件显示它的随机性,但实际上它只是反复播放同一个声音文件。为什么会这样 每当精灵移动时,我都会播放此动作,每当它停止时,我都会暂停此动作。当它暂停和取消暂停时,足迹文件会更改,但如果我继续运行,它只会一遍又一遍地播放相同的足迹文件。runblock不应该连续地随机化吗?我认为问题在于创建SKAction.sequence时激活的足迹文件是重复使用的。这是因为序列只创建一次,然后重复使用 要解决此问题,请尝试使用随机文件名创建一个名为的playsoundfile

当这个动作运行时,当我打印它时,足迹文件显示它的随机性,但实际上它只是反复播放同一个声音文件。为什么会这样


每当精灵移动时,我都会播放此动作,每当它停止时,我都会暂停此动作。当它暂停和取消暂停时,足迹文件会更改,但如果我继续运行,它只会一遍又一遍地播放相同的足迹文件。runblock不应该连续地随机化吗?

我认为问题在于创建
SKAction.sequence
时激活的
足迹文件是重复使用的。这是因为序列只创建一次,然后重复使用

要解决此问题,请尝试使用随机文件名创建一个名为
playsoundfileactions数组,并将其传递给
SKAction.sequence

        let randomize = SKAction.runBlock({ [unowned self] in
            self.footstepFile = "Content/footstep\(RandomInt(1, max: 4))"
            print(self.footstepFile)
        })


        sprite.runAction(SKAction.repeatActionForever(SKAction.sequence([randomize, SKAction.playSoundFileNamed(footstepFile, waitForCompletion: true)])), withKey: "footsteps")

我在SKAction.PlaySoundFileName()行中遇到了一个异常。EXC\u访问错误。哦,等等,修复了这个…是因为我没有运行操作只是声明它。是的,这仍然不起作用,但我认为它尝试运行了很多次,速度如此之快,以至于Crassesi用不同的东西改变了我的答案。
var actions = [SKAction]()

for _ in 1...16 {
    footstepFile = "Content/footstep\(RandomInt(1, max: 4))"
    actions.append(SKAction.playSoundFileNamed(footstepFile, waitForCompletion: true))
}

sprite.runAction(SKAction.repeatActionForever(SKAction.sequence(actions)), withKey: "footsteps")