??Zany完成了對(duì)播放進(jìn)度、狀態(tài)的監(jiān)聽,包括了播放完成后的回調(diào),大幅減少代碼量
大家要是有關(guān)于播放器的問題可以找我有巧,一起討論哇哈哈哈哈哈??
Email Yvente@163.com
創(chuàng)建一個(gè)Zany實(shí)例
let player = Zany(url: url)
創(chuàng)建一個(gè)帶有播放進(jìn)度的Zany實(shí)例
let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
// DispatchQueue.main
// update UI about progress
})
操作這個(gè)實(shí)例
你可以創(chuàng)建一個(gè)Zany實(shí)例作為播放器,在需要播放的時(shí)候調(diào)用 'play()' 方法
let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
// DispatchQueue.main
// update UI about progress
})
player.play()
功能包括:
-
play()
: 播放一個(gè)已經(jīng)暫停的播放器 -
pause()
: 暫停一個(gè)正在播放的播放器 -
reset(_ url: URL?, restart: Bool = true)
: 重置播放器,替換URL
屬性:
-
.id
: 播放器的唯一標(biāo)識(shí) -
.state
: 播放器狀態(tài) (paused
,running
,finished
)
添加/移除 觀察者
你可以為Zany實(shí)例添加進(jìn)度觀察者(單獨(dú)添加的要記得移除述呐,初始化默認(rèn)添加,已經(jīng)在銷毀前作了移除):
let token = player.observe { (zany, progress) -> (Void) in
// DispatchQueue.main
// update UI about progress
}
player.play()
你可以通過token移除對(duì)應(yīng)觀察者:
player.remove(observer: token)
監(jiān)聽播放狀態(tài)的改變
您可以通過分配一個(gè)函數(shù)回調(diào)來監(jiān)聽狀態(tài)更改 - 'onstatechange' 屬性
newState為finished時(shí)表示播放完成蕉毯,再也不用到處寫播放完成的通知了??
player.onStateChanged = {(zany,newState) in
switch newState {
case .running:
// for example: change button state
// the player is running
case .paused:
// the player is paused
case .finished:
// the player playFinished
}
}
你甚至可以為 AVPlayerItem 添加Observer
例如:"status"乓搬,"loadedTimeRanges","playbackBufferEmpty"代虾,"playbackLikelyToKeepUp"
let player = Zany(url: url, observer: { (zany, progress) -> (Void) in
print("\(zany.id)---\(progress)")
}, ItemAddObserver: { (zany, item) -> (Void) in
// add observer for AVPlayerItem
item.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.new, context: nil)
}) { (zany, item) -> (Void) in
// remove observer
item.removeObserver(self, forKeyPath: "status")
}
是不是很方便??
就想要???? 歡迎戳這里 ????
發(fā)現(xiàn)bug或好的建議歡迎 issues or Email Yvente@163.com??????