基本上每当我播放声音时动画减速或暂停,该怎么办???
声音大小20kb mp3。
动画大小5kb png。
代码:
- (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;
}
答案 0 :(得分:2)
修改强>
我刚刚注意到在initSoundResources中,你正在分配和初始化一个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指针未初始化为nil或有效的声音实例,则向其发送播放消息可能会导致崩溃。