2013-03-22 7 views
9

मैं SimpleAudioEngine का उपयोग कर रहा हूं और मैं यह पता लगाने की कोशिश कर रहा हूं कि जारी रखने से पहले ध्वनि प्रभाव खत्म हो रहा है या नहीं।ध्वनि प्रभाव खत्म होने पर कैसे पता लगाया जाए?

मैं किसी भी विधि की तलाश में हूं, लेकिन जिसे मैं लागू करने की कोशिश कर रहा हूं वह काम नहीं करता है!

CDSoundEngine *engine = [CDAudioManager sharedManager].soundEngine;  
ALuint soundId = [[SimpleAudioEngine sharedEngine] playEffect:soundId]; 

float seconds = [engine bufferDurationInSeconds:soundId]; 

हर बार जब मैं bufferDurationInSeconds उपयोग करें, यह चर सेकंड के लिए -1 की एक नाव मान देता है। मैंने कार्यान्वयन की जांच की, और यह एक -1 देता है जब आईडी वैध नहीं है, लेकिन मैं 100% आईडी मान्य हूं!

क्या कोई इस समस्या पर मेरी सहायता कर सकता है, या ध्वनि प्रभाव के अंत का पता लगाने के लिए मुझे एक और तरीका सुझा सकता है?

+0

[यह] (http://www.cocos2d-iphone.org/forum/topic/13178) आपको सही दिशा में मार्गदर्शन कर सकता है। – jverrijt

उत्तर

9

व्हायोला! सीडीसाउंडसोर्स प्राप्त करना, और फिर उस काम से soundId।

(दूसरी पंक्ति वैकल्पिक है, यह सिर्फ ध्वनि बजाती है)।

CDSoundEngine *engine = [CDAudioManager sharedManager].soundEngine; 
[[SimpleAudioEngine sharedEngine] playEffect:@"soundeffect.m4a"]; 
CDSoundSource *aSound =[[SimpleAudioEngine sharedEngine] soundSourceForFile:@"soundeffect.m4a"]; 
float seconds = [engine bufferDurationInSeconds:aSound.soundId]; 

भी खेल खत्म होने पर एक विधि को चलाने के लिए मैं एक एनएसटीमर का उपयोग करता हूं जो सेकेंड परिणाम का उपयोग करता है।

[NSTimer scheduledTimerWithTimeInterval:seconds target:self selector:@selector(aMethod) userInfo:nil repeats:NO]; 

और फिर अंतिम विधि कुछ लागू करती है।

-(void)aMethod 
{ 
NSLog(@"finished playing"); 
} 

हालांकि, इस -1 परिणाम को प्रभावित नहीं करता, मैं soundId चर अपने कोड में दो अलग अलग प्रकार, एक ही पंक्ति में है, जो समस्या पैदा हो जाएगा में दुगुनी दिखती है का कहना है कि करने के लिए है। हालांकि कोई चिंता नहीं, मैंने सफलता के साथ उपरोक्त मेरी विधि का परीक्षण किया है।

ALuint **soundId** = [[SimpleAudioEngine sharedEngine] playEffect:**soundId**]; 
+0

अच्छा कामकाज –

+0

शानदार! मैं इसका जवाब खोजने की कोशिश कर पागल हो रहा था। – Hahnemann

संबंधित मुद्दे