- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MainStoryBoard 上创建了三个 UIButton。
当我按下“yourButton3”时,不会调用 player3。
我发现更改 else if 子句或将某些内容分配给 player3 可以解决此问题,但不知道如何解决。
override func viewDidLoad() {
super.viewDidLoad()
player1?.delegate = self
player2?.delegate = self
player3?.delegate = self
}
let url1 = Bundle.main.bundleURL.appendingPathComponent("music1.mp3")
let url2 = Bundle.main.bundleURL.appendingPathComponent("music2.mp3")
@IBOutlet weak var yourButton: customButton!
@IBOutlet weak var yourButton2: customButton!
@IBOutlet weak var yourButton3: customButton!
fileprivate var player1:AVAudioPlayer?
fileprivate var player2:AVAudioPlayer?
fileprivate var player3:AVAudioPlayer?
@IBAction func pushButton1(sender: UIButton) {
Player(url: url1)
}
@IBAction func pushButton2(sender: UIButton) {
Player1(url: url2)
}
@IBAction func pushButton3(_ sender: UIButton) {
Player(url: url2)
player1!.play()
}
//player3 is not called in this code
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
if (player === player1) {
yourButton.isSelected = false
} else if (player === player2) {
yourButton2.isSelected = false
} else if (player === player3) {
yourButton.isSelected = false
player2!.play()
yourButton2.isSelected = false
}
}
func Player(url: URL) {
do {
try player1 = AVAudioPlayer(contentsOf:url)
player1!.play()
yourButton.isSelected = true
player1!.delegate = self
} catch {
print(error)
}
}
func Player1(url: URL) {
do {
try player2 = AVAudioPlayer(contentsOf:url)
player2!.play()
yourButton2.isSelected = true
player2!.delegate = self
} catch {
print(error)
}
}
func Player3(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)
}
}
最佳答案
您还没有在 Player(url:)
函数中初始化 player3,因此 player === player3
永远不会为真。
您可以编辑您的 Player3(url:, url2:)
函数,如下所示:
func Player3(url: URL, url2: URL) {
do {
try player3 = AVAudioPlayer(contentsOf:url)
try player2 = AVAudioPlayer(contentsOf: url2)
player3!.play()
yourButton.isSelected = true
player3!.delegate = self
player2!.delegate = self
} catch {
print(error)
}
}
然后这样调用它:
@IBAction func pushButton3(_ sender: UIButton) {
Player3(url: url1, url2: url2)
}
关于ios - 未调用 Swift audioPlayerDidFinishPlaying 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42265822/
我有一个类,我调用它来利用 AVAudioPlayer ,并且在播放音频时一切正常,但是当 -audioPlayerDidFinishPlaying: 被称为我的NSLog() 命令表示玩家被释放;问
我正在使用AVAudioPlayer类播放音频,但是问题是,当我播放音频时,即使文件播放完并且即使将循环数设置为1,也无法在audioPlayerDidFinishPlaying中收到回调。 这是代码
这个问题已经有答案了: AVAudioPlayer.play() does not play sound (1 个回答) 已关闭 3 年前。 遇到问题 audioPlayerDidFinishPlay
class ViewController: UIViewController, AVAudioPlayerDelegate { func audioPlayerDidFinishPlaying
Player1 运行良好,但我在执行 Player2 时出错。 我应该如何更改 audioPlayerDidFinishPlaying 以使其工作? 这是我的 ViewController.swift
我在 MainStoryBoard 上创建了带有图像的 UIButton。当我按下该按钮时,它会播放一个音频文件,并且在播放音频时 UIButton 的背景颜色会发生变化。 audioPlayerDi
我在使用 AVAudioPlayer 时遇到问题。我想在我的声音文件完成后做点什么。正在播放声音,但未调用 audioPlayerDidFinishPlaying。 我的.h #import "Vie
我创建了一个自定义类来处理音频播放。 音频播放.h #import #import "AVFoundation/AVAudioPlayer.h" #import @interface AudioP
当我按下“yourButton”或“yourButton2”或“yourButton3”时,每个按钮都会播放一个音频文件,并且在播放音频时,UIButton 被设置为选中状态。 我希望“yourBut
我在 MainStoryBoard 上创建了三个 UIButton。 当我按下“yourButton3”时,不会调用 player3。 我发现更改 else if 子句或将某些内容分配给 player
我正在使用 AVFoundation 框架快速编写一个简单的播放器。一切似乎都正常,除了我的播放器一直在一遍又一遍地播放同一首歌曲。我的播放列表中只有一首歌,所以这是有道理的。我想要做的是检查 aud
我遇到了 AVAudioPlayer 类的奇怪问题,audioPlayerDidFinishPlaying:successfully: 回调有时 未被调用。开始播放的代码的精简版本看起来像, self
我是一名优秀的程序员,十分优秀!