【问题标题】:cocos2d: How to set a timercocos2d:如何设置定时器
【发布时间】:2010-08-01 08:47:53
【问题描述】:

我正在使用 cocos2d 和 box2d 开发一个 iPhone 应用程序。在这个应用程序中,我需要设置一个计时器。 计时器将显示玩家到达目的地的剩余时间...

我该怎么做.....我已经画了一个场景,但我是初学者不确定如何添加计时器..

谢谢

【问题讨论】:

    标签: iphone cocos2d-iphone


    【解决方案1】:

    我会简单地安排一个带有间隔的选择器。这适用于所有基于 CCNode 的类。

    安排每秒触发一次的选择器:

    [self schedule:@selector(timerUpdate:) interval:1];
    

    此方法每秒调用一次:

    -(void) timerUpdate:(ccTime)delta
    {
      numSeconds++;
      // update timer here, using numSeconds
    }
    

    使用 CCTimer 的 Parceval 方法也可以,但您应该更喜欢这样的静态自动释放初始化程序:

    CCTimer *myTimer = [CCTimer timerWithTarget:self
                                       selector:@selector(myTimedMethod:)
                                       interval:delay]];
    

    【讨论】:

    • 此方法在 v2.x 中出现问题。这个有什么替代品。虽然头文件包含方法,但 Xcode 给出错误。
    • 这里也一样。不再有 timerWithTarget 或 initWithTarget 方法(iOS 7.1,Xcode 5.1.1。)。
    【解决方案2】:

    您可以使用 CCTimer。 就像这样:

    float delay = 1.0; // Number of seconds between each call of myTimedMethod:
    CCTimer *myTimer = [[CCTimer alloc] initWithTarget:self 
                                 selector:@selector(myTimedMethod:) interval:delay]];
    

    方法 myTimedMethod: 将每秒被调用一次。

    【讨论】:

    • CCTimerNSTimer 有什么优势?
    • 使用cocos2d内部的调度机制。如果我理解正确,这取决于使用哪种 CCDirector 类型。在这种情况下,优点和缺点(如果有的话)可能几乎无关紧要。
    • 我认为,一个很大的优势是,当游戏暂停时,这个计时器会暂停。
    • 保证在更新/渲染循环中的特定时间触发
    猜你喜欢
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-01
    相关资源
    最近更新 更多