我想知道最好的方法是:
你有这个功能:
- (void)launchAirplane:(int)whichAirplane {
// Add score lables
// Start particle effect
// Move airplane (whichAirplane)
// Remove airplan
}
你有10架飞机,它们彼此相邻。每架飞机应在前一架飞机后延迟0.1秒发射。因此飞机1在0秒后发射,飞机2在0.1秒后发射,飞机3在0.2秒后发射等等。
所以有几种方法可以做到这一点:
答案 0 :(得分:1)
我会这样做:
NSArray *airplanes = ... // here you are initializing your airplanes array
NSTimeInterval *duration = 1.0f;
[airplanes enumerateObjectsUsingBlock:^(Airplane *plane, NSUInteger idx, BOOL *stop) {
[UIView animateWithDuration:duration delay:0.1 * idx options:0 animations:^{
// do your airplane animation here
} completion:^(BOOL finished) {
}];
}];
答案 1 :(得分:0)
如果你想保持延迟以完成飞机的动画,最好的方法是在递归函数中使用完成块进行动画,例如:假设您的飞机物体驻留在一个阵列中,并且您的动画逻辑位于平面模型内,这将使您在发射第一个或第n个平面时所有平面都以恒定延迟启动。
- (void)launchAirplane:(int)whichAirplane {
if (whichAirplane >= [airplanesArray count])
return;
AeroPlane *plane = [airplanesArray objectAtIndex:whichAirplane];
[plane flyWithAnimationDuration:0.1 completionBlock:^{
[self launchAirPlane:++whichAirplane];
}];
}