【笔记】Cocos2dx学习笔记

自建场景类

  • 自建场景类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()一起用的,不过仔细研究了一下实在看不出这个和普通函数有什么区别,看来,还需要继续理解,学习,有没有人来指点我一二,有什么特别的用法或者好处。
原文地址:https://www.cnblogs.com/jhy16193335/p/9241353.html