用变量改变NSTimer速度?

时间:2010-12-28 22:39:14

标签: iphone cocoa-touch

我有一个在viewDidLoad中启动的计时器,看起来像这样

[NSTimer scheduledTimerWithTimeInterval:0.001f target:self selector:@selector(Dragon:) userInfo:nil repeats:YES];

我希望能够使用变量更改我的Interval。但是,任何时候我尝试将变量放在0.001f的位置,我会得到错误......有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我有一个应用程序可以完全满足您的要求。我允许用户在应用程序中更改计时器的速度,因此我需要将该速度变为变量。我是这样做的:

  1. 我在主视图控制器类上创建了一个timer属性。

  2. 我在主视图控制器类加载时初始化定时器。

  3. 此后,我将计时器无效并在值更改时重置。

  4. 我的主视图控制器.m文件中的一些片段:

        //How often to switch views (float)
        #define kInterval [[NSUserDefaults standardUserDefaults] integerForKey:@"interval"]
    
    - (void) viewDidAppear:(BOOL)animated{
        [self setTimer];
    }
    
    - (void) setTimer{
        [self.timer invalidate];
        [self setTimer: [NSTimer scheduledTimerWithTimeInterval:kInterval target:self selector:@selector(timerFired) userInfo:nil repeats:YES]];
    }
    

答案 1 :(得分:0)

应用程序是否从后台进程返回?如果是这样,您可能需要重新设置计时器。您可能还想查看CADisplayLink:http://developer.apple.com/library/ios/#documentation/QuartzCore/Reference/CADisplayLink_ClassRef/Reference/Reference.html%23//apple_ref/doc/uid/TP40009031

答案 2 :(得分:0)

@King Popsicle你可以借助这个方法

  • (void)applicationWillEnterForeground:(UIApplication *)application OR
  • (void)applicationDidBecomeActive:(UIApplication *)application

您可以修复此方法中有关计时器值的事项:)