2013-05-13 43 views
2

我正在使用6个UIButtons来记忆游戏,当它们被触摸时会改变背景图像。我检查两个录音带是否与布尔值相同。我有6个不同的设置,每个按钮操作都设置为YES。使动画等待1秒 - Objective-c

如果第一个BOOL不等于第二个BOOL,那么他们应该改回原来的背景图像。我的问题是,直接点击第二个按钮时,两个按钮会改变。我希望第二个按钮的图像在变化之前被看到。这是我的代码:

- (void)buttonClicked:(id)sender 
{ 
buttonClickedBOOL = YES; 

[animation stuff....] 
if (randomNumberi == 0) 
{ 
    [button setBackgroundImage:[UIImage imageNamed:@"apple.png"] forState:UIControlStateNormal]; 
} 
else if (randomNumberi == 1) 
{ 
    [button setBackgroundImage:[UIImage imageNamed:@"windows_logo.png"] forState:UIControlStateNormal]; 
} 
else if (randomNumberi == 2) 
{ 
    [button setBackgroundImage:[UIImage imageNamed:@"fujitsu.png"] forState:UIControlStateNormal]; 
} 
[UIView commitAnimations]; 

[self gameCheck]; 
} 

这是我检查条件:在

- (void)gameCheck 
{ 
if ((buttonClickedBOOL == YES) && (button2ClickedBOOL == YES)) 
{ 
    button.enabled = NO; 
    button2.enabled = NO; 
    button3.enabled = NO; 
    button4.enabled = NO; 
    button5.enabled = NO; 
    button6.enabled = NO; 

    if (randomNumberi == randomNumberi2) 
    { 
     NSLog(@"The same"); 
    } 
    else 
    { 
     [animations stuff....] 
     [button setBackgroundImage:nil forState:UIControlStateNormal]; 
     [UIView commitAnimations]; 

     [animations stuff....] 
     [button2 setBackgroundImage:nil forState:UIControlStateNormal]; 
     [UIView commitAnimations]; 
    } 

} 

随机变量在viewDidLoad中设置为int数字0-3,并且表示应该设置哪些图像。

回答

1

定义动画代码在不同的方法,并调用它像这样:

[self performSelector:@selector(yourAnimatingMethod) withObject:nil afterDelay:1.0]; 
+0

到你想要延迟1秒的动画 – Ushan87 2013-05-13 14:25:43

+0

是的它的工作!谢谢man1 – user2325183 2013-05-13 14:29:21

+0

不客气队友:) – Ushan87 2013-05-13 19:12:06

1

来自UIView class reference

使用方法animateWithDuration:delay:options:animations:completion:

这个方法有一个延迟参数。它还为动画和完成处理程序使用块。这非常有用。

+0

能否请您解释如何使用呢? – user2325183 2013-05-13 14:27:53

+0

我推荐这个,使用'[UIView commitAnimations]'已被弃用,并且可能不再适用于iOS – 2013-05-13 14:48:59

+0

的更高版本,只要我编写一个包含块参数的方法,我很大程度上依赖于Xcode的块参数自动完成功能。通过这种方式,当它选择参数blurb(或任何被调用的东西)时,您只需按回车键,该块将被格式化为正确的参数。举个例子,看到这个答案:http://stackoverflow.com/a/3238650/1074558 – atreat 2013-05-13 14:59:22