Cocos2D-X开发学习笔记2:定时器
来源:互联网 发布:数据库研究新特点 编辑:程序博客网 时间:2024/05/07 07:31
在上节对加速度传感器的学习中,发现在实际应用中,需要设定一段时间间隔,记录开始和结束的加速度,来进行比较确定其变化。因此接下来将对定时器进行学习。
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次后取消。
在书中看到,在实际应用中,可以同时注册多个定时器来进行多线程操作,能够想象但是难度有点大,就不去试了。
0 0
- Cocos2D-X开发学习笔记2:定时器
- 【Cocos2d-x游戏引擎开发笔记】定时器
- 【Cocos2d-x游戏引擎开发笔记(7)】定时器
- 【Cocos2d-x游戏引擎开发笔记(7)】定时器
- 【Cocos2d-x游戏引擎开发笔记(7)】定时器
- Cocos2d-x学习笔记之Cocos2d-x开发环境搭建
- 学习cocos2d-x笔记-2
- cocos2d-x 学习笔记2
- Cocos2d-x学习笔记2
- cocos2d-x学习笔记2
- cocos2d-x游戏开发学习笔记
- Cocos2d-x游戏开发学习笔记
- cocos2d-x开发学习笔记(一)
- cocos2d-x 3.x游戏开发学习笔记(2)--cocos2d-x 3.x文件目录结构分析
- cocos2d-x初学笔记12:定时器schedule
- [Cocos2d-x开发问题-6] 定时器问题
- Cocos2d-x 学习笔记
- Cocos2d-x学习笔记
- 持续集成入门篇
- Qrcode生成二维码的参数总结 及最小尺寸的测试
- 这可能是最精简的Android6.0运行时权限处理,百行代码的工具类,支持Rationale,附:各种权限详细处理
- 反编译APK获取包名和资源文件
- HEX文件格式详解
- Cocos2D-X开发学习笔记2:定时器
- 深入javaScript--一些有趣的技巧、闭包
- Plus One
- 1207
- Python_Day_3
- 移动开发测试简略
- 【HTML5】基础
- lintcode之排列问题
- expect自动交互