Cocos2D-X开发学习笔记2:定时器
2016-12-07 22:54
281 查看
在上节对加速度传感器的学习中,发现在实际应用中,需要设定一段时间间隔,记录开始和结束的加速度,来进行比较确定其变化。因此接下来将对定时器进行学习。
Cocos2D-X中提供了一个对象schedule,可以通过它来实现定时器的功能。
下面是一个简单的示例:
计时器的注册与取消方法:
1、最简单的定义:使用scheduleUpdate()注册,然后重写update方法:virtual void update(float dt);即可,其中参数dt即时间间隔。取消时对应使用unscheduleUpdate()。
2、带参数的定义:schedule(schedule_selector(HelloWorld::update),0.2f),这样可以直接更改时间间隔dt值。使用unschedule(schedule_selector(HelloWorld::update));取消。
需要注意的是注册和取消是对应的,可以使用unscheduleAllSelectors取消正在作用的所有定时器。
其运行效果如下,我注册了两个定时器,update计时5次后取消并注册update_1,然后update_1计时5次后取消。
在书中看到,在实际应用中,可以同时注册多个定时器来进行多线程操作,能够想象但是难度有点大,就不去试了。
Cocos2D-X中提供了一个对象schedule,可以通过它来实现定时器的功能。
下面是一个简单的示例:
bool HelloWorld::init() { ////////////////////////////// // 1. super init first if (!Layer::init()) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); screenWidth = visibleSize.width; screenHeight = visibleSize.height; scale = 1.0f; label1 = Label::create("0,0,0","Arial",70); label1->setPosition(screenWidth / 2, screenHeight / 2); this->addChild(label1); Device::setAccelerometerEnabled(true); auto listener = EventListenerAcceleration::create(CC_CALLBACK_2(HelloWorld::onAcceleration, this)); //CC_CALLBACK的作用是让_target_对象用_selector_函数时绑定第0/1/2/3个参数后面参数的值 _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); i = 5; schedule(schedule_selector(HelloWorld::update),0.2f); //0.2用来设置每两次调用回调函数的时间间隔,第一个参数是回调函数。 CCLOG("update startted!"); return true; } void HelloWorld::update(float dt) { if (i > 0) { CCLOG("i = %d ",i); i--; } else { unschedule(schedule_selector(HelloWorld::update)); //取消定时器 CCLOG("update ended!"); schedule(schedule_selector(HelloWorld::update_1), 0.2f); //注册新的定时器 CCLOG("update_1 startted!"); } } void HelloWorld::update_1(float dt) { if (i < 5) { i++; CCLOG("i = %d ", i); } else { unschedule(schedule_selector(HelloWorld::update_1)); //取消定时器 CCLOG("update_1 ended!"); } }
计时器的注册与取消方法:
1、最简单的定义:使用scheduleUpdate()注册,然后重写update方法:virtual void update(float dt);即可,其中参数dt即时间间隔。取消时对应使用unscheduleUpdate()。
2、带参数的定义:schedule(schedule_selector(HelloWorld::update),0.2f),这样可以直接更改时间间隔dt值。使用unschedule(schedule_selector(HelloWorld::update));取消。
需要注意的是注册和取消是对应的,可以使用unscheduleAllSelectors取消正在作用的所有定时器。
其运行效果如下,我注册了两个定时器,update计时5次后取消并注册update_1,然后update_1计时5次后取消。
在书中看到,在实际应用中,可以同时注册多个定时器来进行多线程操作,能够想象但是难度有点大,就不去试了。
相关文章推荐
- cocos2d-x学习笔记番外篇04:开发问题汇总01 推荐
- 【Cocos2d-x游戏引擎开发笔记(7)】定时器
- 【Cocos2d-X开发学习笔记】第03期:渲染框架之导演类(CCDirector)的使用
- 【Cocos2d-X开发学习笔记】第07期:渲染框架之摄像机类(CCCamera)的使用
- 【Cocos2d-X开发学习笔记】第09期:渲染框架之菜单类(CCMenu)的使用
- cocos2d-x游戏开发学习笔记
- 【Cocos2d-X开发学习笔记】第01期:PC开发环境的详细搭建
- 【Cocos2d-X开发学习笔记】第05期:渲染框架之布景层类(CCLayer)的使用
- 【Cocos2d-X开发学习笔记】解决Cocos2d-X新建项目运行报错的问题
- 【Cocos2d-X开发学习笔记】第08期:渲染框架之文本类的使用
- cocos2d-x学习笔记01:VS开发环境搭建
- Cocos2d-x学习笔记之Cocos2d-x开发环境搭建
- cocos2d-x学习笔记01:VS开发环境搭建
- 【Cocos2d-X开发学习笔记】第05期:渲染框架之布景层类(CCLayer)的使用
- cocos2d-x学习笔记01:VS开发环境搭建
- cocos2d-x学习笔记01:VS开发环境搭建
- cocos2d-x android开发学习笔记(一) 开发环境的配置与HelloWorld
- cocos2d-x学习笔记01:VS开发环境搭建
- Cocos2d-x引擎学习笔记之(一)Win32下开发环境的搭建
- 【Cocos2d-X开发学习笔记】第04期:渲染框架之场景类(CCScene)的使用