iphone - 创建一个简单的 Simon 克隆 : How to wait between updates?

标签 iphone objective-c cocoa cocoa-touch

我正在学习 Cocoa/Objective-C/iPhone SDK,作为一个应用我所学知识的简单项目,我想创建一个旧版 Simon 游戏的简单版本。四个彩色按钮,向您显示一个序列(红色、绿色、蓝色、红色等),并且您必须重复该序列。

我相信我已经弄清楚了大部分内容,只保留一点:向用户显示序列。具体来说,如何实现按钮突出显示和 200 毫秒后恢复正常之间的延迟。

如果我在主运行循环中休眠,则更新不会正确发生(即使我显式调用 setNeedsDisplay)。如果我生成一个新线程,事情会很快变得复杂,因为我的类方法需要引用回 UI 元素(即时变量)。

有什么建议吗?

最佳答案

您可以使用 UIView 上的 +setAnimationStartDate: 方法来设置一些动画来执行此操作。为了确保在动画期间没有人按下您的按钮,请在动画开始时调用 -[UIApplication beginIgnoringInteractionEvents] 并在动画结束时调用 -[UIApplication endIgnoringInteractionEvents]。 p>

我正在谈论的内容的书面文本示例:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
button1.highlighted = YES;

[UIView beginAnimations:@"" context:nil];
[UIView setAnimationStartDate: CFAbsoluteTimeGetCurrent() + 0.2];
[UIView setAnimationsEnabled:NO];
button1.highlighted = NO;
[UIView commitAnimations];

[UIView beginAnimations:@"" context:nil];
[UIView setAnimationStartDate: CFAbsoluteTimeGetCurrent() + 0.25];
[UIView setAnimationsEnabled:NO];
button2.highlighted = YES;
[UIView commitAnimations];

// etc.

[[UIApplication sharedApplication] performSelector:@selector(endIgnoringInteractionEvents) withObject:nil afterDelay:yourTotalDelay];

关于iphone - 创建一个简单的 Simon 克隆 : How to wait between updates?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1629056/

相关文章:

ios - 在 iphone 中更改自定义集合单元格 subview 的框架

iphone - cocos2d - 子项已添加。无法再次添加

ios - 文档共享面临的问题

macos - 通过cocoa应用程序在safari中打开url

ios - 如何缩放 CALayer 以适应视频层

iphone - 如何在iPhone中实现实时摄像头流媒体传输?

iphone - 在项目中添加htmlparser、htmlnode

ios - MFSideMenu setLeftViewController 无法识别的选择器发送到实例?

macos - 如何检测 Mac 上的屏幕旋转?

cocoa - 如何捕获 shell 命令的输出?