2017-02-13 4 views
0

Player1は正常に動作しますが、Player2を実装する際にエラーが発生します。1つのクラスでaudioPlayerDidFinishPlayingを使用する方法

audioPlayerDidFinishPlayingを変更して正常に動作させるにはどうすればよいですか?

} else if (player === player3) { 

player3常にnil理由を次のようになります。trueあなたがなることは決してありませんelse if -clauseを持ってaudioPlayerdidFinishPlaying(_:successfully:)

func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { 
    if (player === player2) { 
     yourButton2.isSelected = false 
    } else { 
     yourButton.isSelected = false 
     player2!.play() 
     yourButton2.isSelected = false 
    } 
} 


    func Player1(url: URL) { 
    do { 
     try player2 = AVAudioPlayer(contentsOf:url) 
     player2!.play() 
     yourButton2.isSelected = true 
     player2!.delegate = self 

    } catch { 
     print(error) 
    } 
} 

    func Player2(url: URL, url2: URL) { 
    do { 
     try player1 = AVAudioPlayer(contentsOf:url) 
     try player2 = AVAudioPlayer(contentsOf: url2) 
     player1!.play() 
     yourButton.isSelected = true 
     player1!.delegate = self 
    } catch { 
     print(error) 
    } 
} 

答えて

1

:ここ

は私ViewController.swiftのコードですあなたは決してそれに何かを割り当てることはありません。したがって、 audioPlayerdidFinishPlaying(_:successfully:)の3番目のブランチは決して実行されません。あなたの中に、現在のクラスのデザインを、この作業を行うには、次のいずれかを行う必要があります。

  • 変更else if
  • 原因ならば、私は他に編集したが、まだそれがうまくいかなかったplayer3
+0

に何かを割り当てますよくあなたは何が問題なのか教えてくれますか? – risa8

関連する問題