这次介绍键盘响应事件的重写虚函数和Lambda函数方法
/*********************键盘响应——重写虚函数*****************************/
// 初始化并绑定
auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = CC_CALLBACK_2(TouchExa::onKeyPressed, this); // 键盘按下按键
listener->onKeyReleased = CC_CALLBACK_2(TouchExa::onKeyReleased, this); // 键盘释放按键
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this); // this表示当前场景
/******************************************************************/
记得重写虚函数一定要在头文件里加上声明和在cpp文件中定义函数,键盘函数定义如下
/******************************键位响应函数原型***********************************************/
void onKeyPressed(EventKeyboard::KeyCode keyCode, Event* event)
{
log("Key with keycode %d pressed", keyCode);
}
void onKeyReleased(EventKeyboard::KeyCode keyCode, Event* event)
{
log("Key with keycode %d released", keyCode);
}
/****************************************************************************************/
用Lambda函数实现
/*********************键盘响应——Lambda函数*****************************/
auto listener = EventListenerKeyboard::create();
listener->onKeyPressed = [](EventKeyboard::KeyCode keyCode, Event* event){
log("Key with keycode %d pressed", keyCode);
}; // 键盘按下按键
listener->onKeyReleased = [](EventKeyboard::KeyCode keyCode, Event* event){
log("Key with keycode %d released", keyCode);
}; // 键盘释放按键
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
/******************************************************************/
实现重写鼠标虚函数方法,注意这里是CC_CALLBACK_1,因为onMouseDown中的参数是一个
/**********************鼠标响应——重写虚函数***********************/
auto _mouseListener = EventListenerMouse::create();
_mouseListener->onMouseDown = CC_CALLBACK_1(TouchExa::onMouseDown, this); // 鼠标按下
_mouseListener->onMouseMove = CC_CALLBACK_1(TouchExa::onMouseMove, this);// 鼠标移动
_mouseListener->onMouseUp = CC_CALLBACK_1(TouchExa::onMouseUp, this); // 鼠标释放
_mouseListener->onMouseScroll = CC_CALLBACK_1(TouchExa::onMouseScroll, this); // 鼠标滚动
_eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this);
/******************************************************************/
实现鼠标方法
/******************************鼠标响应函数原型***********************************************/
void onMouseDown(EventMouse* event){
log("Mouse Down");
}
void onMouseMove(EventMouse* event){
log("Mouse Move");
}
void onMouseUp(EventMouse* event){
log("Mouse Up");
}
void onMouseScroll(EventMouse* event){
log("Mouse Scroll");
}
/****************************************************************************************/
用Lambda函数实现鼠标事件
/**********************鼠标响应——Lambda函数***********************/
auto _mouseListener = EventListenerMouse::create();
_mouseListener->onMouseDown = [](EventMouse* event){log("Mouse Down"); }; // 鼠标按下
_mouseListener->onMouseMove = [](EventMouse* event){log("Mouse Move"); }; // 鼠标移动
_mouseListener->onMouseUp = [](EventMouse* event){log("Mouse Up"); }; // 鼠标释放
_mouseListener->onMouseScroll = [](EventMouse* event){log("Mouse Scroll"); }; // 鼠标滚动
_eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this);
/******************************************************************/