SKAction 播放声音不是从头开始的

Posted

技术标签:

【中文标题】SKAction 播放声音不是从头开始的【英文标题】:SKAction play sound not from begining 【发布时间】:2017-12-06 03:49:55 【问题描述】:

我不想从 mp3 文件的开头播放声音,而是从开始后 14 秒开始播放声音。我有以下用于声音播放的代码,但我没有成功找到解决方案:

if let textAudio = textAudio 
        let wait = SKAction.wait(forDuration: 0.1)
        let play = SKAction.play()
        if view.scene! == scene02 
            // play 14s after begining
        
        textAudio.run(SKAction.sequence([wait, play]))
    

【问题讨论】:

据我所知,SKAction 无法做到这一点。 如果你想坚持使用SpriteKit 框架,你需要使用SKAudioNodeAVAudioPlayerNode。为这个写一个答案需要太长时间,而且我不知道有任何解释这个机制的教程,也许其他人可以添加到这个评论中。 【参考方案1】:

您可以按照here 的说明使用AVAudioPlayercurrentTime 方法:

import AVFoundation
var textAudio: AVAudioPlayer?
let path = Bundle.main.path(forResource: "example.mp3", ofType:nil)!
let url = URL(fileURLWithPath: path)

do 
    textAudio = try AVAudioPlayer(contentsOf: url)
    textAudio?.currentTime = TimeInterval(14.0)
    textAudio?.play()
 catch 
    // couldn't load file :(

【讨论】:

以上是关于SKAction 播放声音不是从头开始的的主要内容,如果未能解决你的问题,请参考以下文章

animate动画(flash)插入了一个音频必须从头开始播放从中间开始播放就没声音

在 Swift 3 中从数组中播放随机声音

在 spritekit swift 中触摸节点时没有播放声音

OpenAL vs AVAudioPlayer vs 其他播放声音的技术

SKAction playSoundFileNamed 没有声音通过 iphone 扬声器

斯威夫特:如何延长短音的播放时间