Edit:
Я только заметил, что в initSoundResources, вы alloc'ing и init'ing объект APlayer, но затем назначая всплывают на указатель сразу после этого. Я почти уверен, что это не то, что вы намереваетесь.
Попробуйте это:
- (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];
}
Идея заключается в том, что UIView анимации асинхронно. Если анимация установлена на 0,8 секунды, это не означает, что код займет 0,8 секунды.
Что я имею в виду, так это то, что код сразу после того, как код анимации UIView будет вызван эффективно сразу после кода анимации. В этом случае звук будет играть (возможно) до начала анимации.
Я не могу себе представить, почему это будет приостановлено или заморожено, но использование этого метода должно работать.
В моем коде я принял предположение, что в какой-то момент вызывается метод initSoundResources, прежде чем пытаться воспроизвести звук.
Если указатель soundPink не инициализирован нулем или действительным звуковым экземпляром, то отправка его сообщения воспроизведения может привести к сбою.
первый раз спасибо! Мне нужно что-то изменить в моем методе initSoundResources? Я просто синтезирую soundPink, мне нужно что-то сделать? как это [UIViewsetAnimationDidStopSelector: @selector (playSound)]; если мне нужно таймер звука? [NSTimer scheduleTimerWithTimeInterval: 1.8 target: self selector: @selector (playSound) userInfo: nil repeatts: false]; – nil
Код, который я вам дал, должен работать только в отношении делегата UIViewAnimation и didStopSelector. Что касается ваших initSoundResources, вам не нужно назначать поплавок указателю soundPink. Разумеется, компилятор должен предупредить вас об этом, разве вы этого не видели? – Jasarien
Я не видел никакого предупреждения, что вы имеете в виду, назначив поплавок? – nil