自建场景类
- 自建场景类
BaseScene
继承与Scene
类,在init
函数中添加了默认的,键盘与鼠标事件的响应,添加了一个用于读取XML文件的字典,添加了一个结束场景的方法。
- 类的声明代码如下:
#ifndef __BASESCENE_SCENE_H__
#define __BASESCENE_SCENE_H__
#include "cocos2d.h"
#include "mine.h"
class BaseScene : public cocos2d::Scene
{
public:
virtual bool init() override;
static cocos2d::Scene* scene();
CREATE_FUNC(BaseScene);
virtual void menuCloseCallback(cocos2d::Ref* sender);//关闭场景
//检测鼠标键盘某个按键是否按下
bool isMousePressed(cocos2d::EventMouse::MouseButton mouseCode);
bool isKeyPressed(cocos2d::EventKeyboard::KeyCode keyCode);
//键盘按下或弹起事件响应
virtual void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event);
virtual void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event);
//鼠标事件响应
virtual void onMouseDown(cocos2d::Event *event);
virtual void onMouseUp(cocos2d::Event *event);
virtual void onMouseMove(cocos2d::Event *event);
virtual void onMouseScroll(cocos2d::Event *event);
protected:
cocos2d::CCDictionary *strings; //加载xml文件用
std::map<cocos2d::EventKeyboard::KeyCode, bool> keys;//保存哪个键盘按键按下
std::map<cocos2d::EventMouse::MouseButton, bool> mouse;//保存哪个鼠标按键按下
cocos2d::Vec2 mousePosition;//保存鼠标位置
int ScrollSpeed;//保存鼠标滚动速度
};
#endif // __BaseScene_SCENE_H__
疑问与学习
- 在打这段代码时我发现有一个宏很奇特:
CC_CALLBACK_1
,点开一看他的展开是这样的#define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
,问题来了,这个std::bind
是什么?百度了一下,说:bind()函数是用来绑定函数调用的某些参数的。???那么,什么是绑定函数?
- bind()是和function()一起用的,不过仔细研究了一下实在看不出这个和普通函数有什么区别,看来,还需要继续理解,学习,有没有人来指点我一二,有什么特别的用法或者好处。