2009-12-10 6 views
0

fondamentalement chaque fois que je joue un son l'animation ralentir ou faire une pause, que faire ???aide! lors de la lecture d'un son l'animation gèle pause

taille du son 20kb mp3.

taille de l'animation 5kb png.

code:

- (void) startAnimation { 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.8]; 
CGPoint destination = CGPointMake(152,20); 
pink.center = destination; 
[UIView commitAnimations]; 
[soundPink play];  
} 


- (void) initSoundResources { 

soundPink = [[APlayer alloc] initWithFile:@"pink" type:@"mp3"]; 
soundPink = 0.4; 
} 

Répondre

2

Edit:

Je viens de remarquer que, dans initSoundResources, vous alloc'ing et un objet aPlayer s'être initialisé, mais l'attribution d'un flotteur à la pointeur tout de suite après. Je suis sûr que ce n'est pas ce que vous voulez.


Essayez ceci:

- (void) startAnimation { 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.8]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(playSound)]; 
    CGPoint destination = CGPointMake(152,20); 
    pink.center = destination; 
    [UIView commitAnimations]; 
} 


- (void) initSoundResources { 
    soundPink = [[APlayer alloc] initWithFile:@"pink" type:@"mp3"]; 
    soundPink = 0.4; 
} 


- (void) playSound { 
    //assuming initSoundResources is called at some point before this... 
    [soundPink play]; 
} 

L'idée ici est que les animations UIView sont asynchrones. Si l'animation est définie sur 0,8 seconde, cela ne signifie pas que le code prendra 0,8 seconde à s'exécuter. Ce que je veux dire, c'est que le code tout de suite après le code d'animation UIView est appelé de manière efficace immédiatement après le code d'animation. Dans ce cas, le son va jouer (probablement) avant même que l'animation ne commence.

Je ne peux pas imaginer pourquoi il ferait une pause ou un gel, mais en utilisant cette méthode devrait fonctionner.

Dans mon code, j'ai supposé que la méthode initSoundResources est appelée à un moment donné avant d'essayer de jouer le son.

Si le pointeur soundPink n'est pas initialisé sur une instance de son nulle ou valide, l'envoi du message de lecture peut provoquer un blocage.

+0

premier merci! Dois-je changer quelque chose dans ma méthode initSoundResources? Je ne fais que synthétiser le soundPink, dois-je faire quelque chose de plus? comment faire ceci [UIViewsetAnimationDidStopSelector: @selector (playSound)]; Si j'ai besoin de minuter le son? [NSTimer scheduledTimerWithTimeInterval: 1.8 cible: auto-sélecteur: @selector (playSound) userInfo: nil répète: false]; – nil

+0

Le code que je vous ai donné devrait fonctionner, en ce qui concerne le délégué UIViewAnimation et didStopSelector. En ce qui concerne votre initSoundResources, vous ne devez pas affecter un flottant au pointeur soundPink. Le compilateur devrait sûrement vous avertir à ce sujet, ne l'avez-vous pas vu? – Jasarien

+0

Je n'ai pas vu d'avertissement, qu'entendez-vous par assigner un flotteur? – nil

Questions connexes