Cocos2d-x学习笔记(六) 定时器Schedule的简单应用



Cocos2d-x中的定时器使用很简单,共有3种:schedule、scheduleUpdate和scheduleOnce。简单介绍一下三种的区别:

schedule,每隔指定时间执行某个自定义的函数

schedule(schedule_selector(自定义函数名),间隔时间);

scheduleUpdate,每帧执行一次Update函数(只能是以Update命名的函数,需要调用其他函数则使用schedule)

scheduleOnce,在指定时间后执行某个自定义函数,且只会执行一次

scheduleOnce(schedule_selector(自定义函数名),间隔时间);

今天将会学习schedule的用法,这个学会了其他两种就很简单了。首先来个简单的例子,显示当前系统时间,并使用schedule刷新当前时间。

 

 

	//label
	pLabel = CCLabelTTF::create(CCString::createWithFormat("%d:%d:%d", now->tm_hour, now->tm_min, now->tm_sec)->getCString(), "Thonburi", 34);
	CCSize s = CCDirector::sharedDirector()->getWinSize();
	pLabel->setPosition(ccp(s.width / 2, s.height / 2));
	addChild(pLabel);
	schedule(schedule_selector(Schedule::showTimebyLabel), 1.0f);

 

创建label并默认显示系统当前时间,然后使用schedule函数每秒调用我们的自定义函数

 

void Schedule::showTimebyLabel(float dt){
	time(&tt);
	now = localtime(&tt);
	pLabel->setString(CCString::createWithFormat("%d:%d:%d",now->tm_hour,now->tm_min,now->tm_sec )->getCString());
}

 

 

 

运行之后就可以看到屏幕中间不停跳动的时间了。其实到这里schedule函数的学习就差不多了,但我想试着实现很多游戏里都会有的美术字倒计时,于是结合上一篇精灵类的知识做了一个用美术字实现的系统时间,能实现动态显示系统时间,倒计时就是小意思了。

实现原理跟在label中显示差不多,用schedule每秒调用给精灵更换图片的函数就可以了。重复代码比较多,我就不贴上来了,来两张效果图吧。

然后是用到的数字素材,网上找半天没找到,很多生成工具都必须在MAC下使用,没办法就自己用PS随便弄了下。本来想把这数字素材的plist放上来的但是没找到哪里可以传附件……貌似不能的样子……

 

发布了9 篇原创文章 · 获赞 4 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览