【问题标题】:How do I get these numbers "counting" up every 5 seconds ?? (ObjC; Xcode)我如何让这些数字每 5 秒“计数”一次? (对象;Xcode)
【发布时间】:2013-01-13 15:29:40
【问题描述】:

我希望我的球在我的比赛中变得更快。在 pos 你可以选择球的速度。但我希望球每 5 秒变得更快。 pos = CGPointMake(5.0,4.0); 5 秒后 5.0 应该变成 6.0 和 4.0 变成 5.0。

我有一个名为 MainInt 的计时器。 MainInt 是一个计数器,它会计算您玩了多长时间而不会丢失。

还有一个显示计时器的标签。 (IBOutlet UILabel *seconds; .h)

.m


-(void)viewDidLoad {

[lastTime setHidden:YES];


[super viewDidLoad];
// X Speed Y Speed
pos = CGPointMake(5.0,4.0); // <- these numbers (add 1 each every 5 sec.)
Speedy = [NSTimer scheduledTimerWithTimeInterval:5.0  target:self selector:@selector(doThis) userInfo:nil repeats:YES];

}

/*




-(void)doThis {



if(MainInt % 5 == MainInt)     //True every 5th second
{

    pos = CGPointMake();
}

}
*/

【问题讨论】:

    标签: objective-c arrays add


    【解决方案1】:

    好吧,一方面,MainInt % 5 == MainInt 在 5 秒后是 false 直到永恒。 1-4 是 MainInt 的唯一值,这将永远实现。考虑查看模运算符的工作原理。即使您将其更改为MainInt % 5 == 0(这是正确的),您仍然需要问自己为什么要在那里检查有关外部异步时间值的任何内容。所有这一切都会做的是,如果计时器不同步,每次调用它时都强制它不做任何事情,因为你已经将它的调用之间的延迟设置为 5 秒。如果您希望一切都很好地同步,您可能应该有一个主 NSTimer 或 CADisplayLink 负责游戏循环,您可以在其中调用需要每帧更新游戏状态的方法。

    如果您真的想以这种方式为所有事情使用单独的计时器并尝试使它们与您的主要时间值保持同步,那么就可以了。

    //replace timer line with this one
    Speedy = [NSTimer scheduledTimerWithTimeInterval: 0.1  target:self selector:@selector(doThis) userInfo:nil repeats:YES];
    
    //replace body of "doThis" with the following
    if(MainInt % 5 == 0) //True every 5th second
    {
        pos = CGPointMake(pos.x + 1, pos.y + 1);
    }
    

    此外,您应该遵循某种命名约定并尝试更清楚地命名事物。如果pos是球的速度,不应该命名为velocity而不是位置吗?什么是Speedy,一个实例变量?如果是这样,为什么它是大写的?另外,Speedy 是我听过的最模糊的名字之一。它不是宠物,它是一个变量。 MainInt 也一样。一般来说,类名保留大写,实例变量、方法和函数使用驼峰式命名。它会让你的代码更清晰。 :)

    【讨论】:

    • 对不起。我今年 16 岁,我的英语并不完美,因为我来自德国 :D 我尽量让他们记住给他们的名字我更容易记住 :D 但下次我会尽量让我的定义更清楚,谢谢你:)
    • @EndritÇallaki 无需道歉。我不是故意要听起来居高临下或其他什么。你的英文其实还不错!如果您单独编写代码,最好的办法是确保您的变量的名称能够提醒它们的用途。请记住,如果其他人需要阅读您的代码(例如在团队环境中),最好他们也能快速理解您的意图。在我看来,大写/小写字母的命名约定是最重要的,这样您就可以快速区分不同的事物。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 2016-08-05
    • 1970-01-01
    • 2018-05-17
    相关资源
    最近更新 更多