1

我创建了一个简单的按钮游戏,每次点击按钮都会给用户一个分数。该按钮每 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;

我已阅读 Apple Docs on Using Timers,但未能完全理解。我想也许我可以使用:

- (void)countedTimerFireMethod:(NSTimer *)timer{
  count ++;
  if(count > 20){
     [self.timer invalidate];
     self.timer = nil;

但它不能正常工作。我究竟做错了什么?我是 Objective-C 的新手,所以我对事情的工作原理不太熟悉。

4

2 回答 2

4

问题出在您的计时器方法上,您正在传递 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;}
于 2013-10-26T17:42:53.877 回答
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

您还可以参考链接以获得更多说明。

如果您通过上面的代码解决了这个问题,请告诉我。

于 2013-10-26T14:56:37.603 回答