2016-11-15 3 views
14

나는 이것을 조사해 보았고 버튼을 클릭 할 때 여러 가지 다른 방법으로 사운드를 재생 해 보았습니다.스위프트 3 사운드 재생

신속한 3 버튼을 클릭하면 어떻게 소리가 나지? 나는 소리라는 이름의 폴더에 내 소리를 가지고 이름이

+0

그것은 오래된 질문에 쉽게 소리를 재생할 수 있습니다,하지만 짧은 사운드를 (오히려 MP3 이상) WAV 또는 카페 오디오 형식을 사용하는 것이 권장되는 방법입니다 언급 할 수있다. – Whirlwind

+0

@Whirlwind 왜 그런지 설명해 주시겠습니까? 나는 실제로 이것에 관심이 많다. 왜냐하면 내가 현재 mp3를 사용하고있는 짧은 소리로 작업하고있는 앱을 가지고 있기 때문이다. 이 점을 지적 해 주셔서 감사합니다! – SRMR

+1

@SRMR iOS에서 압축 및 압축 해제 된 형식에 관한 Google. 예를 들어, wav 파일에는 압축이 없습니다. 즉, 최고의 품질, 낮은 CPU 사용률, 큰 디스크 공간 사용량을 얻을 수 있습니다. 따라서 디스크에 너무 많은 공간을 차지하지 않기 때문에 짧은 사운드에 이상적입니다. 반면에 mp3는 압축되어 있으므로 디스크 공간을 절약 할 수 있습니다. 즉, 응용 프로그램 크기를 낮게 유지하지만 램으로 압축 해제되며 압축 해제되면 압축되지 않은 사운드와 동일한 공간이 사용됩니다. 또한 감압은 CPU에 몇 퍼센트의 영향을줍니다 ... 희망이 당신에게 의미가 있습니다. – Whirlwind

답변

15

사용이 기능 아래 ClickSound.mp3입니다

//MARK:- PLAY SOUND 
func playSound() { 
    let url = Bundle.main.url(forResource: "ClickSound", withExtension: "mp3")! 

    do { 
     player = try AVAudioPlayer(contentsOf: url) 
     guard let player = player else { return } 

     player.prepareToPlay() 
     player.play() 
    } catch let error as NSError { 
     print(error.description) 
    } 
} 

첫 수입 AudioToolbox 수입 AVFoundation

그것이 작동 희망 :)

+0

이것은 내 오류입니다. @Amit Rawat – shane

+0

치명적인 오류 : 선택 값을 언 래핑하는 동안 예기치 않게 nil이 발견되었습니다. (lldb) – shane

+0

이것은 url = Bundle.main.url (forResource : "ClickSound", withExtension : "mp3") 코드를 playSound() { )! 할 { 하자 플레이어 = AVAudioPlayer (contentsOf : 홈페이지) 시도 가드 플레이어 == 다른 플레이어 {반환} player.prepareToPlay() player.play() }을하게 잡을 오류 NSError { 인쇄로 (오류 .description) } } – shane

14

플레이어가 처분되지 않도록하려면 뷰 컨트롤러의 자산으로 가져 가야합니다.

run(SKAction.playSoundFileNamed("ClickSound.mp3", waitForCompletion: false)) 

희망 :

The only real catch is that you must store your player as a property or other variable that won't get destroyed straight away – if you don't, the sound will stop immediately.

source:

var player : AVAudioPlayer? 

func playSound(){ 
     let path = Bundle.main.path(forResource: "alert", ofType:"mp3")! 
     let url = URL(fileURLWithPath: path) 

     do { 
      let sound = try AVAudioPlayer(contentsOf: url) 
      self.player = sound 
      sound.numberOfLoops = 1 
      sound.prepareToPlay() 
      sound.play() 
     } catch { 
      print("error loading file") 
      // couldn't load file :(
     } 
} 
+1

파괴 된 재산에 대한 귀하의 의견은 나를 구해 냈습니다.감사. – Lengo

+0

@LenD 당신이 가장 환영합니다, 나는 내가 도울 수있어서 기쁩니다 :) –

3

는이 일을 훨씬 쉽게 방법은 버튼을 누르면 기능 (: 만 스프라이트 키트 작동 주)에 다음 코드 줄을 넣어하는 것입니다 도움이됩니다.

5

SwiftySound을 사용하는 것이 좋습니다. 그것은 당신이 스위프트 3

Sound.play(file: "ClickSound.mp3")