2016-06-23 3 views
1

Я пытаюсь создать слайдер, который изменяет звук в зависимости от значения ползунка. Так, например, если значение ползунка равно 0, звук не воспроизводится. Если значение равно 1, «песня» играет, и если значение равно 2, «песня б» играет и т.д.Как реализовать sender.selected if statement в UISlider?

Я использую AVFoundation и создал свой SoundPlayer:

var soundPlayer:AVAudioPlayer = AVAudioPlayer() 

я добавил Outlets на мой слайдера:

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

Определено местоположение файла моего аудио:

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

создал метод сделать для моей пл Эйер:

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

И создали мое действие:

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

Теперь - слайдер в настоящее время активизирует песню, когда выбирается любое значения. Как только звук начнется, его нельзя остановить. Мне нужно добавить sender.value и создать переменные, которые определяют значение, и выбрать другие песни, которые я собираюсь добавить.

Помогите пожалуйста ?!

Редактировать с Amit выпуска:

Amit - я изменил максимальное значение ползунка 3 для 3 аудио.

При добавлении следующего к IBAction, ползунок играет только один звук, когда он достигает максимальное значение:

@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

, если вы хотите, чтобы значение ползунка просто использовать «пусть значение = Int (sender.value)» – lzl

+0

конечно спасибо! –

+0

sliderValue, который вы получаете, является значением Float, которое не будет точно соответствовать 1.0 или 2.0. –

ответ

0

You слайдер value собственности как sender.value, как типаж его Int и изменять аудио в соответствии с вашим необходимость.

Перед использованием необходимо установить значение minimum и maximum.

Установите по умолчанию 0, минимум до 0 и максимально возможное количество или количество ваших песен.

Вы можете использовать «образец-матч» оператор = ~:

let sliderValue = Int(slider.value) 

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

Спасибо Amit.Я сделал это, но у меня возникают некоторые проблемы с моим, если другое заявление: @IBAction Func audioSlider (Sender: UISlider) { пусть sliderValue = (sender.value) если таковые sliderValue == 100-199 { soundPlayer1.play () soundPlayer1.numberOfLoops = -1 } еще, если sliderValue == 200-299 { soundPlayer2.play() soundPlayer2.numberOfLoops = -1 } еще, если sliderValue == 0-99 { } Что я делаю петь? - Игрок просто воспроизводит один из звуков. Ползунок установлен в значение 300 –

+0

Пожалуйста, обновите свой вопрос с помощью своей проблемы. Также, если вы играете один и тот же soundPlayer для диапазона 100-199 или около того, какова цель выбора диапазона? Пожалуйста, объясните свою проблему в самом вопросе. –

+0

Кроме того, в соответствии с вашим последним комментарием, кажется, ваше состояние всегда занимает -99 как 100-199 = -99, 200-299 = -99 –

0

1.Установить максимальное значение ползунка как количество звуковых файлов, находящихся в пачке.

2.Создайте массив, содержащий имя файла или путь ресурса для всего аудио. Как

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) 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^