您的位置:首页 > 其它

关于倒计时的显示问题

2013-07-15 21:44 204 查看
    在很多游戏中,倒计时算是很常见的功能,但倒计时这块功能却并不是那么简单,有很多细节需要注意。

下面我来说下倒计时功能的简单实现方法:

    为了显示倒计时函数我们需要知道 系统时间,根据增加的系统时间去判定剩余时间(有些游戏会根针数去判定倒计时,这样会导致不同配置的电脑玩有不同的效果,这种做法是很不推荐的,但也有一些游戏用针数做判定,比如武林群侠传的 钓鱼系统 和 打猎好像也是)。

比如我要写一个隔段时间领取奖励的类:

class Reward{

public:

    Reward();//这里假设所有的初始化都已经在里面进行了

    ~Reward();//假设这里不会有内存泄露

    void drawTime()

  {

         int coolTime = m_finishTime - getSystemTime() /*假设一个获得系统当前时间的函数*/;

        coolTime = Max(coolTime , 0);//保证冷却时间大于0

         m_pLabel->setText( pConvertFunc( coolTime  ).c_str()  );

    }

    void resetCoolTime()

    {

         finishTime = 20 + getSystemTime();

    }

    typedef std::string (*pConvert)(int time);//将时间转换成字符串形式的函数指针类型

    pConvert pConvertFunc;   

private:

    cocos2d::CCLabelTTF *m_pLabel ;//显示时间的控件这里 借用cocos2d 里的标签控件

    int m_finishTime;//保存的是完成的时间  这个时间等于 冷却时间+领取时的系统时间

    static int const CoolTime = 20;

};

当然还要有一个每针或 间隔一段时间去调用它的函数

在cocos2d 里可以使用schedule 或 Callfunc_XX 。

。在这里我是保存完成时间而不是直接保存冷却时间了,这样做的好处就是无论你间隔多少秒去调用void drawTime() ,倒计时的计算都不会有错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: