2016-06-23 1 views
1

J'essaye de créer un curseur qui change l'audio dépendant de la valeur du curseur. Ainsi, par exemple, si la valeur du curseur est 0, aucun son n'est lu. Si la valeur est 1, « chanson d'un » joue et si la valeur est 2, « chanson b » joue etc.Comment implémenter sender.selected if instruction dans UISlider?

J'utilise AVFoundation et ai créé mon soundplayer:

var soundPlayer:AVAudioPlayer = AVAudioPlayer() 

J'ai ajouté points à mon curseur:

@IBOutlet weak var audioSlider: UISlider! 
@IBOutlet weak var audioSliderPlay: UISlider! 

Defined l'emplacement du fichier de mon audio:

let audioLocation = NSBundle.mainBundle().pathForResource("song a", ofType: ".mp3") 

a créé une méthode de faire pour mon pl ayer:

do { 
audioSoundPlayer = try AVAudioPlayer (contentsOfURL: NSURL (fileURLWithPath: audioLocation!)) 
catch { 
     print(error) 
    } 

Et créé mon action:

@IBAction func audioSlider(sender: UISlider) { 
    if (!sender.selected) { 
     audioSoundPlayer.play() 
     audioSoundPlayer.numberOfLoops = -1 
    } 

maintenant - le curseur active actuellement une chanson quand une valeur est choisie. Une fois que l'audio a commencé, il ne peut pas être arrêté. Je dois ajouter un sender.value et créer des variables qui définissent la valeur et choisir d'autres chansons que je vais ajouter.

Aidez s'il vous plaît ?!

Modifier avec le numéro Amit:

Amit - J'ai changé la valeur maximale du curseur à 3 pour 3 audios.

En ajoutant ce qui suit à la IBAction, le curseur joue qu'une seule piste audio une fois qu'il atteint la valeur maximale:

@IBAction func audioSlider(sender: UISlider) { 
    let sliderValue = (sender.value) 
    if sliderValue == 1 { 
     soundPlayer1.play() 
     soundPlayer1.numberOfLoops = -1 

    } 
    else if sliderValue == 2 { 
     soundPlayer2.play() 
     soundPlayer2.numberOfLoops = -1 


    } 
    else if sliderValue == 3 { 
     soundPlayer3.play() 
     soundPlayer3.numberOfLoops = -1 

    } 
    else if sliderValue == 0 { 
soundPlayer1.stop() 
soundPlayer2.stop() 
soundPlayer3.stop() 
    } 
} 
+0

si vous voulez la valeur du curseur juste utiliser « Apprécions = Int (sender.value) » – lzl

+0

Bien sûr merci! –

+0

sliderValue que vous obtenez est une valeur Float qui ne correspondra pas exactement à 1.0 ou 2.0 –

Répondre

0

propriété Vous curseur value comme sender.value comme typecast à Int et changer l'audio en fonction de votre avoir besoin.

Vous devez définir la valeur minimum et maximum du curseur avant de l'utiliser.

Définir par défaut à 0, au minimum à 0 et au maximum à votre besoin ou le nombre de chansons que vous avez.

Vous pouvez utiliser l'opérateur « pattern match » ~ =:

let sliderValue = Int(slider.value) 

if 100 ... 199 ~= sliderValue { 
    print("play audio 1") 
} 
else if 200 ... 299 ~= sliderValue { 
    print("play audio 2") 
} 
+0

Merci Amit.Je l'ai fait, mais je rencontre quelques problèmes avec mon if else: @IBAction func audioSlider (expéditeur: UISlider) { laisser SliderValue = (sender.value) si SliderValue == {100-199 soundPlayer1.play () soundPlayer1.numberOfLoops = -1 } else if SliderValue == {200-299 soundPlayer2.play() soundPlayer2.numberOfLoops = -1 } else if SliderValue == 0-99 { } Que suis-je chanter? - Le joueur joue simplement l'un des sons. Le curseur est réglé à la valeur 300 –

+0

Veuillez mettre à jour votre question avec votre problème. Aussi, si vous jouez le même soundPlayer pour la gamme 100-199 ou plus, quel est le but de prendre la gamme? S'il vous plaît expliquer votre problème dans la question elle-même. –

+0

Aussi, selon votre dernier commentaire, semble que votre condition prend toujours -99 comme 100-199 = -99, 200-299 = -99 –

0

1.Réglez valeur maximale de la Slider nombre de fichiers audio présents dans le faisceau.

2.Créez un tableau contenant le nom du fichier ou le chemin d'accès de la ressource pour tous les fichiers audio. Comme

slider.maxValue = 5; 
let audioPaths = ["1.mp3", "2.mp3", "3.mp3", "4.mp3", "5.mp3"]; 

@IBAction func audioSlider(sender: UISlider) 
{ 
    var index = Int(sender.value); 
    let audioPath = audioPaths[index]; 
    do 
    { 
     audioSoundPlayer = try AVAudioPlayer (contentsOfURL: NSURL (fileURLWithPath: audioLocation!)) 
     catch 
     { 
      print(error) 
     } 
    } 
}