Entonces, lo que quiero hacer es crear y reproducir un sonido en rápido que se reproducirá cuando presione un botón, sé cómo hacerlo en Objective-C, pero ¿alguien sabe cómo hacerlo en Swift?
Sería así para Objective-C:
NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mysoundname" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &mySound);
Y luego para jugarlo haría:
AudioServicesPlaySystemSound(Explosion);
¿Alguien sabe cómo pude hacer esto?
ios
objective-c
audio
swift
Jacob Banks
fuente
fuente
var url :NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("mysoundname", ofType: "wav"))
Respuestas:
Aquí hay un poco de código que agregué a FlappySwift que funciona:
fuente
coinSound
yaudioPlayer
con enlet
lugar devar
porque no quieres cambie estos objetos en un momento posterior.do { (player object) } catch _ { }
o obtendrá un error. :)Esto es similar a algunas otras respuestas, pero quizás un poco más "Swifty":
Tenga en cuenta que este es un ejemplo trivial que reproduce el efecto del código en la pregunta. Deberá asegurarse de hacerlo
import AudioToolbox
, además, el patrón general para este tipo de código sería cargar sus sonidos cuando se inicia la aplicación, guardarlos enSystemSoundID
variables de instancia en algún lugar, usarlos en toda su aplicación y luego llamarAudioServicesDisposeSystemSoundID
cuando haya terminado con ellos.fuente
AudioServicesDisposeSystemSoundID(mySound)
para liberar memoria más adelante? si lo haces de inmediato, el sonido básicamente no se reproduce (se limpia instantáneamente), así que lo hicedispatch_after
y lo limpié 10 segundos después.Extensión Handy Swift:
Luego, desde cualquier lugar de su aplicación (recuerde
import AudioToolbox
), puede llamarpara reproducir "sound.mp3"
fuente
DispatchQueue.global(qos: .userInitiated).async {}
.NSBundle
ha sido reemplazado porBundle
, useBundle.main.url(forResource: fileName, withExtension: fileExtension)
en su lugarEsto crea un a
SystemSoundID
partir de un archivo llamadoCha-Ching.aiff
.fuente
Con una clase y AudioToolbox:
Uso:
fuente
fuente
Este código funciona para mí. Utilice Try and Catch para AVAudioPlayer
fuente
"Morse.aiff" es un sonido del sistema de OSX, pero si simplemente hace clic en "nombrado" dentro de XCode, podrá ver (en el panel de Ayuda rápida) dónde esta función busca los sonidos. Puede estar en la carpeta "Archivos de apoyo".
fuente
De acuerdo con el nuevo Swift 2.0 deberíamos usar do try catch. El código se vería así:
fuente
esto funciona con Swift 4:
fuente
fuente
Veamos un enfoque más actualizado para esta pregunta:
fuente
La solución de Matt Gibson funcionó para mí, aquí está la versión Swift 3.
fuente
Rápido 4
o
fuente
trabaja en
Xcode 9.2
fuente
Ejemplo de código Swift :
fuente
Puedes probar esto en Swift 5.2:
fuente
swift 4 y iOS 12
}
fuente
Use esta función para hacer sonido en Swift (puede usar esta función donde desee hacer sonido).
Primero agregue SpriteKit y AVFoundation Framework.
fuente
Este código funciona para mí:
fuente
Para Swift 3 :
fuente
Swift 3, así es como lo hago.
fuente
¿No podría simplemente
import AVFoundation
seleccionar el reproductor de audio (var audioPlayer : AVAudioPlayer!
) y reproducir el sonido? (let soundURL = Bundle.main.url(forResource: "sound", withExtension: "wav"
)fuente
fuente