Я надеялся, что кто-то сможет мне помочь. Я пишу простую игру, когда пользователь нажимает кнопку, генерируется массив чисел, соответствующих номерам кнопок, тогда цикл for используется для поочередного включения и выключения каждой кнопки с временной задержкой. Проблема в том, что все кнопки в массиве включаются, и только последний отключается. Это похоже на perfomSelector с командой задержки времени, выполняемой только в конце цикла for, кто-нибудь знает, почему?performSelector с задержкой по времени не работает в петле - iPhone
Вот код, который я использую:
- (IBAction)buttonPushed:(id)sender;
{
//creat random array of buttons
[self randomArray];
//loop through each button in array and turn them on and off
for (NSString *i in gameArray)
{
int butNum = [i intValue];
numLit = [[NSNumber alloc] initWithInt:butNum];
//turn button on
[self buttonLit];
//turn button off
[self performSelector:@selector(buttonUnLit) withObject:nil afterDelay:1.0];
}
}
- (void)randomArray
{
//initialize array
gameArray = [[NSMutableArray alloc] initWithArray:NULL];
//************* Build random array of numbers *******************
for (int i = 0; i < level; i++)
{
//generate a number from 0 to 11 at random
NSInteger num = (arc4random() % 11);
//add number to array
[gameArray addObject:[NSString stringWithFormat:@"%i", num]];
}
return;
}
- (void)buttonLit
{
int numLitInt = [numLit intValue];
if (numLitInt == 0)
{
[button0 setImage:[UIImage imageNamed:@"0(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 1)
{
[button1 setImage:[UIImage imageNamed:@"1(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 2)
{
[button2 setImage:[UIImage imageNamed:@"2(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 3)
{
[button3 setImage:[UIImage imageNamed:@"3(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 4)
{
[button4 setImage:[UIImage imageNamed:@"4(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 5)
{
[button5 setImage:[UIImage imageNamed:@"5(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 6)
{
[button6 setImage:[UIImage imageNamed:@"6(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 7)
{
[button7 setImage:[UIImage imageNamed:@"7(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 8)
{
[button8 setImage:[UIImage imageNamed:@"8(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 9)
{
[button9 setImage:[UIImage imageNamed:@"9(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 10)
{
[button10 setImage:[UIImage imageNamed:@"10(lite).png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 11)
{
[button11 setImage:[UIImage imageNamed:@"11(lite).png"] forState:UIControlStateNormal];
return;
}
}
- (void)buttonUnLit
{
int numLitInt = [numLit intValue];
if (numLitInt == 0)
{
[button0 setImage:[UIImage imageNamed:@"0.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 1)
{
[button1 setImage:[UIImage imageNamed:@"1.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 2)
{
[button2 setImage:[UIImage imageNamed:@"2.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 3)
{
[button3 setImage:[UIImage imageNamed:@"3.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 4)
{
[button4 setImage:[UIImage imageNamed:@"4.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 5)
{
[button5 setImage:[UIImage imageNamed:@"5.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 6)
{
[button6 setImage:[UIImage imageNamed:@"6.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 7)
{
[button7 setImage:[UIImage imageNamed:@"7.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 8)
{
[button8 setImage:[UIImage imageNamed:@"8.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 9)
{
[button9 setImage:[UIImage imageNamed:@"9.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 10)
{
[button10 setImage:[UIImage imageNamed:@"10.png"] forState:UIControlStateNormal];
return;
}else if (numLitInt == 11)
{
[button11 setImage:[UIImage imageNamed:@"11.png"] forState:UIControlStateNormal];
return;
}
}
+1 @Daniel, но даже это было очевидно для нас, что проблема в том, что не было очевидно OP –
достаточно Fair ...... – Daniel
Daniel - Спасибо за предложение, я попытался это , Кнопки включаются и выключаются, но они включаются сразу, а затем все выключается сразу. То, что я хочу сделать, - это поочередно включать и выключать кнопки. например, кнопка 1 включается на одну секунду, затем выключается, затем кнопка 5 включается на одну секунду, затем выключается и т. д. Имейте в виду, что я программировал только 4 месяца ... Еще раз спасибо за вашу помощь! – user961632