Cocos2d-x 3.x游戏开发之旅读书笔记(3)
来源:互联网 发布:php 响应时间设置 编辑:程序博客网 时间:2024/05/18 01:49
一、schedule
1、scheduleUpdate和update
1)this->scheduleUpdate();
2)virtual voidupdate(float dt);//重写update函数
3)update函数的具体实现
2、使用schedule调用自定义函数
1)自定义函数
2)实现函数
3)this->schedule(schedule_selector(自定义的函数),float型的时间)
3、停止函数更新
1)与函数更新对应,“this->scheduleUpdate()”对应“this->unscheduleUpdate()”,“this->schedule(schedule_selector(自定义的函数),float型的时间)”对应“this->unschedule(schedule_selector(自定义的函数))”
注意:取消时只需要传递函数,不需要传递其他参数
2)this->unscheduleAllSelectors();//停止所以函数更新
4、函数更新一次scheduleOnce
1)自定义函数
2)实现函数
3)this->scheduleOnce(schedule_selector(自定义的函数),float型的时间)
5、要获得准确的时间要利用update或自定义函数的float参数进行累计
二、观察者模式工具类--NotificationCenter
1、在两个Layer中进行通信
1)第一个Layer中:
在init函数中加入:
this->schedule(schedule_selector(MyHelloWorldScene::sendMsg),3.0f);//三秒后发送消息
函数实现:
voidMyHelloWorldScene::sendMsg(float dt)
{
NotificationCenter::getInstance()->postNotification("test",NULL);//发布test信息,不传递数据
}
2)第二个Layer中:
在init函数中加入:
NotificationCenter::getInstance()->addObserver(
this,
callfuncO_selector(SecondScene::testMsg),
"test",
NULL);//不传递数据
函数实现:
void SecondScene::testMsg(Ref* data)//传递数据时data接收到数据
{
log("SecondScene");
}
注意:addObserver和postNotification不能同时传递数据(除非数据相同)
三、内存管理机制
Cocos2dx的create函数都会使用autorelease函数,若对象没有被持有就会被释放,类似C++的智能指针。对这方面比较了解就不详细记录了。
retain和release:持有与释放(只有在调用autorelease函数后才能生效)
四、保存机制
UserDefault::getInstance()->setStringForKey("myName","wuguangyuan");//保存数据,参数分别为key和value
//获取数据,key和获取失败返回的数据
std::stringmyName = UserDefault::getInstance()->getStringForKey("myName","none");
log("myname is %s", myName.c_str());
运行一次后已经保存了myName的数据,注释掉setStringForKey后运行依然可以获得数据
类似的还有bool型,integer型,float型和double型
五、有限状态机
这部分内容比较绕,下面是我理顺的思路:
一个对象有多种状态,每种状态都有各自的行为,行为结束时会转换状态,然后根据转换后的状态实现行为,这样不断地在各种状态直接转换,执行各种行为。
具体就不介绍了,一来没办法解释清楚,二来在网络上有很多相关的更加具体的内容,如果忘记了可以直接查找其他比较详细的博客。
- Cocos2d-x 3.x游戏开发之旅读书笔记(3)
- 《Cocos2d-x 3.x游戏开发之旅》读书笔记(1)
- Cocos2d-x 3.x游戏开发之旅读书笔记(2)
- 《Cocos2d-x游戏开发之旅》读书笔记1:开发环境
- Cocos2d-x 3.x游戏开发之旅
- Cocos2d-x 3.x游戏开发之旅---<Lambda>
- Cocos2d-x 3.x游戏开发之旅---<消息转发>
- Cocos2d-x 3.x游戏开发之旅---<状态机>
- Cocos2d-x 3.x游戏开发之旅---<UI模块>
- Cocos2d-x 3.x游戏开发之旅---<单例要加retain()>
- 《Cocos2d-x游戏开发之旅》读书笔记2:学习创建游戏项目
- 《Cocos2d-x游戏开发之旅》学习笔记(一)
- 《cocos2d-x游戏开发之旅》学习笔记(二)
- Cocos2d-x 3.x游戏开发之旅---(Runner实现总结)
- Cocos2d-x 3.x游戏开发之旅---(Animation的操作)
- Cocos2d-x 3.x游戏开发之旅---(TMXMap的操作)
- Cocos2d-x 3.x游戏开发之旅---<把角色放在屏幕中间>
- Cocos2d-x 3.x游戏开发之旅---<Lua与C++>
- 71_访问assets下的数据库
- 日历时间日期的用法总结
- iOS开发系列--C语言之存储方式和作用域
- 72_布局的优化
- 感应设备的插拔
- Cocos2d-x 3.x游戏开发之旅读书笔记(3)
- leetcode刷题,总结,记录,备忘 201
- 蘑菇街2017春招笔试
- 机器学习基础(五十六)—— tanh、sign 与 softsign
- 73_ListView的优化和使用
- 设计模式学习--装饰模式
- 74_ListView实现分页加载
- java 获取当前函数名的实现代码
- acm_Sequence one