एक पंक्ति का चयन करते समय निम्न कोड AVAudioPlayer
एस के सेट को एक निश्चित तिथि पर प्लेबैक के लिए सेट करता है (इस मामले में, 50 खिलाड़ी 1 सेकंड के अंतराल में खेल रहे हैं) में कई AVAudioPlayers को playAtTime() के साथ सेट करना बंद करें।)। चूंकि मैं फिर से स्पर्श करते समय पूरी प्रक्रिया को पुनरारंभ करना चाहता हूं, इसलिए मुझे लूप के लिए सेटअप को तोड़ने की आवश्यकता है क्योंकि खिलाड़ियों को सेटअप करने में कुछ सेकंड लगते हैं।लूप
इसके अलावा, AVAudioPlayerDelegate
की प्रतिनिधि विधि का उपयोग करके प्लेबैक को समाप्त करने के बाद प्रत्येक खिलाड़ी को हटाया जा रहा है। मैंने कोड में इसे शामिल नहीं किया क्योंकि यह प्रश्न के लिए प्रासंगिक नहीं है।
मैं जाँच करने के लिए पाश के लिए सेटअप की अनुमति है या अंदर एक ध्वज का उपयोग कर की कोशिश की है, लेकिन वह काम नहीं करता।
var players: [AVAudioPlayer] = []
var loadError: NSError?
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Removes the players that have been setup already.
players.removeAll()
// The for loop from the previous row selection should be stopped here.
for i in 0..<50 {
do {
let player = try AVAudioPlayer(contentsOfURL: soundUrls[i])
players += [player]
// The process of setting these up takes a few seconds, I need to break it.
print("Firing timer")
player.playAtTime(player.deviceCurrentTime + NSTimeInterval(i))
} catch let error as NSError {
loadError = error
}
}
}
क्या होता है, यह है कि सेटअप पिछली पंक्ति चयन से शुरू हो रहा है जब तक यह समाप्त हो गया है और उसके बाद ही पाश शुरू होता है के लिए नए जारी रहेगा। मुझे इसे पहले तोड़ना होगा।
मैं समझ नहीं है कि यह कैसे से निपटने के लिए। शायद मुख्य धागे (कैसे?) से प्रक्रियाओं को हटाकर? किसी भी मदद की बहुत सराहना की!
अपने पाश दुर्घटना होगा अगर soundUrls 50 है 0 से आइटम ... 50 रन 51 बार। – ergoon
सुधार के लिए धन्यवाद, टेक्स्ट फ़ील्ड में यह उदाहरण कोड बनाते समय यह मेरी गलती थी, मैंने इसे सही कर दिया है। अभी भी एक जवाब की तलाश में! – nontomatic