Donc ce que je veux faire, c'est créer et jouer un son en Swift qui jouera lorsque j'appuie sur un bouton, je sais comment le faire en Objective-C, mais est-ce que quelqu'un sait comment le faire en Swift?
Ce serait comme ça pour Objective-C:
NSURL *soundURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"mysoundname" ofType:@"wav"]];
AudioServicesCreateSystemSoundID((__bridge CFURLRef)soundURL, &mySound);
Et puis pour y jouer je ferais:
AudioServicesPlaySystemSound(Explosion);
Est-ce que quelqu'un sait comment je pourrais faire ça?
ios
objective-c
audio
swift
Jacob Banks
la source
la source
var url :NSURL = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("mysoundname", ofType: "wav"))
Réponses:
Voici un peu de code que j'ai ajouté à FlappySwift qui fonctionne:
la source
coinSound
etaudioPlayer
aveclet
au lieu devar
puisque vous ne voulez pas modifiez ces objets ultérieurement.do { (player object) } catch _ { }
ou vous obtiendrez un bug! :)Ceci est similaire à d'autres réponses, mais peut-être un peu plus "Swifty":
Notez qu'il s'agit d'un exemple trivial reproduisant l'effet du code dans la question. Vous devrez vous assurer de le faire
import AudioToolbox
, et le modèle général pour ce type de code serait de charger vos sons au démarrage de votre application, de les enregistrer dans desSystemSoundID
variables d'instance quelque part, de les utiliser dans toute votre application, puis d'appelerAudioServicesDisposeSystemSoundID
lorsque vous avez terminé avec eux.la source
AudioServicesDisposeSystemSoundID(mySound)
pour libérer de la mémoire plus tard? si vous le faites tout de suite, le son ne joue pas (se nettoie instantanément), alors je l'ai faitdispatch_after
et je l'ai nettoyé 10 secondes plus tard.Extension Handy Swift:
Ensuite, de n'importe où dans votre application (n'oubliez pas de le faire
import AudioToolbox
), vous pouvez appelerpour lire "sound.mp3"
la source
DispatchQueue.global(qos: .userInitiated).async {}
.NSBundle
a été remplacé parBundle
, utilisez à laBundle.main.url(forResource: fileName, withExtension: fileExtension)
placeCela crée un
SystemSoundID
fichier à partir d'un fichier appeléCha-Ching.aiff
.la source
Avec une classe et AudioToolbox:
Usage:
la source
la source
Ce code fonctionne pour moi. Utilisez Try and Catch pour AVAudioPlayer
la source
"Morse.aiff" est un son système d'OSX, mais si vous cliquez simplement sur "nommé" dans XCode, vous pourrez voir (dans le volet Aide rapide) où cette fonction recherche les sons. Il peut se trouver dans votre dossier "Fichiers de support"
la source
Selon le nouveau Swift 2.0, nous devrions utiliser do try catch. Le code ressemblerait à ceci:
la source
cela fonctionne avec Swift 4:
la source
la source
Voyons une approche plus mise à jour de cette question:
la source
La solution de Matt Gibson a fonctionné pour moi, voici la version swift 3.
la source
Swift 4
ou
la source
travaille dans
Xcode 9.2
la source
Exemple de code SWIFT :
la source
Vous pouvez essayer ceci dans Swift 5.2:
la source
swift 4 et iOS 12
}
la source
Utilisez cette fonction pour produire du son dans Swift (vous pouvez utiliser cette fonction là où vous souhaitez produire du son.)
Ajoutez d'abord SpriteKit et AVFoundation Framework.
la source
Ce code fonctionne pour moi:
la source
Pour Swift 3 :
la source
Swift 3 voici comment je le fais.
la source
Ne pourriez-vous pas simplement
import AVFoundation
sélectionner le lecteur audio (var audioPlayer : AVAudioPlayer!
) et lire le son? (let soundURL = Bundle.main.url(forResource: "sound", withExtension: "wav"
)la source
la source