Итак, что я хочу сделать, так это создать и быстро воспроизвести звук, который будет воспроизводиться, когда я нажимаю кнопку, я знаю, как это сделать в Objective-C, но кто-нибудь знает, как это сделать в Swift?
Для Objective-C это будет примерно так:
NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mysoundname" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &mySound);
А потом, чтобы поиграть, я бы сделал:
AudioServicesPlaySystemSound(Explosion);
Кто-нибудь знает, как я мог это сделать?
ios
objective-c
audio
swift
Джейкоб Бэнкс
источник
источник
var url :NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("mysoundname", ofType: "wav"))
Ответы:
Вот небольшой код, который я добавил во FlappySwift, который работает:
источник
coinSound
иaudioPlayer
withlet
вместо,var
поскольку вы не хотите измените эти объекты позже.do { (player object) } catch _ { }
иначе вы получите ошибку! :)Это похоже на некоторые другие ответы, но, возможно, немного больше "Swifty":
Обратите внимание, что это тривиальный пример, воспроизводящий эффект кода в вопросе. Вам нужно обязательно это сделать
import AudioToolbox
, плюс общий шаблон для этого типа кода будет заключаться в том, чтобы загружать ваши звуки при запуске вашего приложения, сохранять ихSystemSoundID
где-то в переменных экземпляра, использовать их во всем приложении, а затем вызывать,AudioServicesDisposeSystemSoundID
когда вы закончите с ними.источник
AudioServicesDisposeSystemSoundID(mySound)
чтобы в дальнейшем освободить память? если вы сделаете это сразу, звук в основном не воспроизводится (очищается мгновенно), поэтому я сделал этоdispatch_after
и очистил его через 10 секунд.Удобное расширение Swift:
Затем из любого места вашего приложения (не забудьте
import AudioToolbox
) вы можете позвонитьпроиграть "sound.mp3"
источник
DispatchQueue.global(qos: .userInitiated).async {}
.NSBundle
заменен наBundle
, используйтеBundle.main.url(forResource: fileName, withExtension: fileExtension)
вместоЭто создает
SystemSoundID
из файла с именемCha-Ching.aiff
.источник
С классом и AudioToolbox:
Использование:
источник
источник
Этот код у меня работает. Используйте Try and Catch для AVAudioPlayer
источник
«Morse.aiff» - это системный звук OSX, но если вы просто нажмете на «named» в XCode, вы сможете увидеть (на панели QuickHelp), где эта функция ищет звуки. Это может быть ваша папка "Вспомогательные файлы".
источник
Согласно новому Swift 2.0 мы должны использовать do try catch. Код будет выглядеть так:
источник
это работает со Swift 4:
источник
источник
Давайте посмотрим на более обновленный подход к этому вопросу:
источник
Решение Мэтта Гибсона сработало для меня, вот версия быстрой 3.
источник
Swift 4
или
источник
работает в
Xcode 9.2
источник
Пример кода Swift :
источник
Вы можете попробовать это в Swift 5.2:
источник
swift 4 и iOS 12
}
источник
Используйте эту функцию для создания звука в Swift (вы можете использовать эту функцию там, где хотите воспроизводить звук.)
Сначала добавьте SpriteKit и AVFoundation Framework.
источник
Этот код работает для меня:
источник
Для Swift 3 :
источник
Swift 3 вот как я это делаю.
источник
Не могли бы вы просто
import AVFoundation
выбрать аудиоплеер (var audioPlayer : AVAudioPlayer!
) и воспроизвести звук? (let soundURL = Bundle.main.url(forResource: "sound", withExtension: "wav"
)источник
источник