سؤال

وادعو playSoundFromBundle من التعليمات البرمجية أدناه للعب الأصوات (متماسكه عموما الملفات). لدي الصوت الذي يفعل بنقرة واحدة وبعد ذلك الصوت يتلاشى. كلا الأصوات في نفس الملف. أحيانا أحصل على اثنين من النقرات ثم تتلاشى. وهذا يعني، فوق، فوق ... تتلاشى. بنقرة واحدة ليس ما ينبغي أن تقوم به. انا التخمين يبدأ الصوت (الصوت فوق)، ويحصل على إعادة تشغيل انقطاع وبعد ذلك (الصوت كامل ... انقر / تتلاشى) بسبب المعالجة الأخرى التي يمكن أن يحدث. يبدو عشوائي عندما سيحدث. أضع صوت على موضوع خاص بها في محاولة لتجنب النقر المزدوج. هل هناك أي شيء آخر يمكنني القيام به لضمان الصوت يلعب بشكل صحيح؟

- (void) playSoundFromBundleThreaded:(NSArray*)arr{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSString *fileName = (NSString*)[arr objectAtIndex:0];
NSString *fileExt = (NSString*)[arr objectAtIndex:1];
NSError *err;
AVAudioPlayer *newPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource: fileName ofType: fileExt inDirectory:@"/"]] error: &err];
self.audioPlayer = newPlayer;
self.audioPlayer.numberOfLoops = 0;
self.audioPlayer.volume = .5;

if (self.audioPlayer == nil)
{
    NSLog(@"Problem initializing Sound - %@", [err description]);
}
else
{
    [self.audioPlayer play];
}
[newPlayer release];
[pool release];
}

- (void) playSoundFromBundle:(NSString*)fileName fileExtension:(NSString*)fileExt{
NSArray *arr = [NSArray arrayWithObjects:fileName, fileExt, nil];
[NSThread detachNewThreadSelector: @selector(playSoundFromBundleThreaded:) toTarget:self withObject:arr];
}
هل كانت مفيدة؟

المحلول

ولا فكرة اذا كان هذا العمل، ولكن تحقق من الاشياء الدورة الصوت. والمقصود أن إدارة الأمور مثل ما إذا كان اللعب من أصوات أخرى (مثل مشغل الموسيقى) سوف يقطع الصوت من التطبيق الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top