关于倒计时的显示问题

    在很多游戏中,倒计时算是很常见的功能,但倒计时这块功能却并不是那么简单,有很多细节需要注意。

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

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

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

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() ,倒计时的计算都不会有错误。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值