UIbutton을 만들어준다. (control & drag)
그리고 버튼을 눌렀을때 소리가 나는 코드를 작성해준다. (stackflow에 있다)
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func keyPressed(_ sender: UIButton) {
playSound()
}
func playSound() {
let url = Bundle.main.url(forResource: "C", withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
}
}
여러 버튼을 하나의 IBaction으로 이을 수 있다.
print(sender....)를 통해
버튼을 눌렀을때 어떤 값 각 버튼의 title을 확인 할 수있다.
그렇다면 현재 func playsound에 forResource가 C로 되어있어 어떤 버튼을 눌러도 C.wav의 file만 재생이된다.
위의 sender.currentTitle을 이용하여, 각 버튼을 눌렀을때 그에 해당하는 음의 파일이 재생되도록 만들어 보자.
before
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func keyPressed(_ sender: UIButton) {
print(sender.currentTitle)
playSound()
}
func playSound() {
let url = Bundle.main.url(forResource: "C", withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
}
}
after (내가작성한 코드)
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func keyPressed(_ sender: UIButton) {
//print(sender.currentTitle)
playSound(sender)
}
func playSound(_ sender: UIButton) {
let url = Bundle.main.url(forResource: sender.currentTitle, withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
}
}
after(강의에서의 코드)
import UIKit
import AVFoundation
class ViewController: UIViewController {
var player: AVAudioPlayer!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func keyPressed(_ sender: UIButton) {
//print(sender.currentTitle)
playSound(soundName: sender.currentTitle!)
}
func playSound(soundName: String) {
let url = Bundle.main.url(forResource: soundName, withExtension: "wav")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
}
}