मेरे पास एक ऑडियो फ़ाइल है जिसे उपयोगकर्ता को UIScrollView स्क्रॉल करते समय फीका होना चाहिए। हालांकि, उपयोगकर्ता द्वारा स्क्रॉलिंग बंद होने तक performSelector:withObject:afterDelay:
विधि अवरुद्ध है। तो मैं एक और धागा पर एक fadeout प्रदर्शन करने के लिए कुछ कोड बनाने के लिए प्रयास किया है:मैं पृष्ठभूमि थ्रेड पर AVAudioPlayer को कैसे निकाल सकता हूं?
- (void)fadeOut
{
[NSThread detachNewThreadSelector:@selector(fadeOutInBackground:) toTarget:self withObject:self.audioPlayer];
}
- (void)fadeOutInBackground:(AVAudioPlayer *)aPlayer
{
NSAutoreleasePool *myPool = [[NSAutoreleasePool alloc] init];
[self performSelector:@selector(fadeVolumeDown:) withObject:aPlayer afterDelay:0.1];
[myPool release];
}
- (void)fadeVolumeDown:(AVAudioPlayer *)aPlayer
{
aPlayer.volume = aPlayer.volume - 0.1;
if (aPlayer.volume < 0.1) {
[aPlayer stop];
} else {
[self performSelector:@selector(fadeVolumeDown:) withObject:aPlayer afterDelay:0.1];
}
}
यह जहाँ तक performSelector के रूप में हो जाता है, लेकिन आगे नहीं क्योंकि मुझे लगता है कि यह एक धागा यह करने के लिए पहुँच नहीं है पर प्रदर्शन करने के लिए कोशिश कर रहा है। मैं इसे performSelector:onThread:withObject:waitUntilDone:
के लिए भी बदल नहीं सकता क्योंकि इसमें कोई देरी विकल्प नहीं है।
कोई भी विचार? उन्होंने ध्वनि को खत्म करने के लिए इतना कठिन क्यों बनाया है? moan
धन्यवाद!
निरपेक्ष प्रतिभा। धन्यवाद! :) – jowie
दिव्य! धन्यवाद @ मार्टिनकोट! –