2010-05-25 26 views
0

Je code dans un jeu simple où je déplace un carré qui effectue un effet sonore à chaque fois que le carré se déplace. (comme un son ambulant)Objectif C retarder le son lorsque plusieurs répétitions

Problème lors de la lecture de l'effet sonore entraînant un retard de rafraîchissement de l'affichage. Comme si c'était trop de performance pour le moteur. Je demandais s'il y a un moyen de jouer correctement le, mais aucun son avait tendance continue (ce n'est pas vraiment une boucle, mais il pourrait être si la marche était sans fin)

ici ma fonction: ... la façon dont je initialisées l'objet audio

moveSound = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil]; 

et ici la fonction où elle est appelée

... 
{ 
    moveSound.currentTime = 0; 
    [moveSound play]; 
} 

est là un bon moyen de le faire? thx

+0

Mac ou iPhone? –

Répondre

1

Afin d'obtenir une plus faible latence audio, vous devriez probablement regarder dans le CoreAudio API.

Votre code ressemblerait à quelque chose comme ceci:

NSString *audioPath = [[NSBundle mainBundle] pathForResource:@"NameOfSound" ofType:@"caf"]; 
NSURL *audioURL = [NSURL fileURLWithPath:audioPath]; 
SystemSoundID soundId; 
AudioServicesCreateSystemSoundID((CFURLRef)audioURL, &soundId); 

Ce soundID agit comme une poignée au son que vous avez créé, donc chaque fois que vous avez besoin de jouer que vous appelleriez

AudioServicesPlaySystemSound(soundId); 
0

Ok i trouvé ceci:

Blockquote - (void) setSon {

CFBundleRef mainBundle = CFBundleGetMainBundle(); 

CFURLRef soundFileURLRef = CFBundleCopyResourceURL (
              mainBundle, 
              CFSTR ("squareMove"),// à mettre dans un xml ou plist 
              CFSTR ("caf"), 
              NULL 
              ); 

AudioServicesCreateSystemSoundID (
            soundFileURLRef, 
            &soundFileObject 
           ); 
CFRelease(soundFileURLRef); 

}

et je joue le son comme

AudioServicesPlaySystemSound (soundFileObject);

Dommage que nous ne pouvons pas faire

midi