私は問題があります。ループ内のいくつかのボタンをアニメーション化したいと考えています。シーケンスが繰り返されない場合は機能しますが、配列内でシーケンスが繰り返されると問題が発生します。
- (void)flash:(id)sender delay:(int)time;
{
UIButton *button = (UIButton *)sender;
NSTimeInterval duration = 1;
[UIView animateWithDuration:duration
delay:time + 0.5
options:UIViewAnimationOptionAutoreverse
animations:^{
[button setAlpha:0.1f];
} completion:^(BOOL finished) {
[button setAlpha:1.0f];
}
];
}
(このメソッドは正常に機能し、メソッドを「フラッシュ」と呼びます)
- (void) play: (id)sender
{
//buttons is a array that contains buttons =>
//buttons = [right, left, up, down, nil]
//positions is a sequence of the buttons positions
//if buttons positions is [0,1,2,3]
//positions have the random positions of buttons, example:
//positions = [0, 3, 4, 5,8, 7,9]
int randomNumber;
NSNumber *index;
randomNumber = (arc4random() % 4);
[positions addObject: [NSNumber numberWithInteger:randomNumber]];
UIButton *btn;
for(int i=0; i<[positions count]; i++)
{
index = [positions objectAtIndex:i];
btn = [buttons objectAtIndex:[index intValue]];
[self flash:btn delay:i];
}
}
位置のシーケンスが繰り返されない場合、たとえば: position= [1,2,3,0]、問題はありません。ただし、シーケンスがたとえば次の場合: 位置 = [0,0,0,1] (数字を繰り返す)、プログラムはアニメーションを表示しません。