我创建了一个简单的按钮游戏,每次按下按钮都会给用户一个点。按钮每1.5秒随机出现在屏幕上。我希望游戏在30秒后或20个随机按钮弹出后结束。我一直在使用下面的代码在屏幕上随机弹出按钮:
timer = [NSTimer scheduledTimerWithTimeInterval: 1.5 target:self
selector:@selector(moveButton:)
userInfo:nil
repeats:YES];
我在头文件中声明了计时器:
NSTimer *timer;
@property (nonatomic, retain) NSTimer *timer;
我在Using Timers上阅读了Apple文档,但未能完全理解它。我想也许我可以用:
- (void)countedTimerFireMethod:(NSTimer *)timer{
count ++;
if(count > 20){
[self.timer invalidate];
self.timer = nil;
但它无法正常工作。我究竟做错了什么?我是Objective-C的新手,所以我对事情的运作方式并不熟悉。
答案 0 :(得分:3)
问题在于您的计时器方法是否正在传递moveButton方法,但在下面的方法中,您停止方法名称不同的计时器,请尝试以下方法: -
self.timer = [NSTimer
scheduledTimerWithTimeInterval: 1.5 target:self
selector:@selector(moveButton:)
userInfo:nil
repeats:YES];
//只需更改下面的方法名称
- (void)moveButton:(NSTimer *)timer{
count ++;
if(count > 20){
[self.timer invalidate];
self.timer = nil;}
答案 1 :(得分:0)
如果您使用的是新版Xcode,则无需声明
NSTimer *timer;
并且在安排计时器时可以使用
self.timer = [NSTimer scheduledTimerWithTimeInterval: 1.5 target:self
selector:@selector(moveButton:)
userInfo:nil
repeats:YES]
而不是
timer = [NSTimer scheduledTimerWithTimeInterval: 1.5 target:self
selector:@selector(moveButton:)
userInfo:nil
repeats:YES]
您使用正确的方法停止计时器,即invalidate
您还可以参考link以获得更多说明。
如果您通过上述代码解决了这个问题,请告诉我。