1.点击事件
/*鼠标事件*/
EventListenerTouchOneByOne *touchOneByOne = EventListenerTouchOneByOne::create();
touchOneByOne->onTouchBegan = [&](Touch *onTouch, Event *event)
{
CCLOG("\nLambda: onTouchBegan");
return true;
};
touchOneByOne->onTouchMoved = [&](Touch* onTouch, Event* event)
{
CCLOG("\nLambda: onTouchMoved");
};
touchOneByOne->onTouchEnded = [&](Touch* onTouch, Event* event)
{
CCLOG("\nLambda: onTouchEnded");
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchOneByOne, this);
2.键盘事件
EventKeyboard::KeyCode myKeyboard 当前的按键
Event myEvent 事件
/*键盘事件*/
EventListenerKeyboard* myEventListenerKeyboard = EventListenerKeyboard::create();
myEventListenerKeyboard->onKeyPressed = [&](EventKeyboard::KeyCode myKeyCode,Event* myEvent)
{
CCLOG("onKeyPressed");
};
myEventListenerKeyboard->onKeyReleased = [&](EventKeyboard::KeyCode myKeyCode,Event* myEvent)
{
CCLOG("onKeyReleased");
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(myEventListenerKeyboard, this);
3.区别键盘事件的按键
void Scene_11::myonKeyPressed(EventKeyboard::KeyCode myKeyCode, Event* event)
{
CCLOG("onKeyPressed");
switch (myKeyCode)
{
case cocos2d::EventKeyboard::KeyCode::KEY_F1:
CCLOG("Pressed KEY_F1");
break;
case cocos2d::EventKeyboard::KeyCode::KEY_0:
CCLOG("Pressed KEY_0");
break;
case cocos2d::EventKeyboard::KeyCode::KEY_A:
CCLOG("Pressed KEY_A");
break;
}
}
4.鼠标操作
/* 鼠标事件 */
EventListenerMouse* myEventListnerMouse = EventListenerMouse::create();
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(myEventListnerMouse,this);
myEventListnerMouse->onMouseDown = [&](Event* myEvent)
{
EventMouse* myEventMouse = (EventMouse*)myEvent;
Vec2 v = myEventMouse->getLocation(); //获取鼠标位置UI坐标系,左上角原地(0,0)
CCLOG("Down x:%.2f, y: %.2f", v.x, v.y);
CCLOG("onMouseDown");
};
myEventListnerMouse->onMouseMove = [&](EventMouse* myEventMouse)
{
Vec2 v = myEventMouse->getLocationInView(); //OpenGL坐标系
CCLOG("Down x:%.2f, y: %.2f", v.x, v.y);
CCLOG("onMouseMove");
};
myEventListnerMouse->onMouseUp = [&](Event* event)
{
CCLOG("onMouseUp");
};
myEventListnerMouse->onMouseScroll = [&](Event* event)
{
CCLOG("onMouseScroll");
};
5.事件控制精灵
/*点击事件*/
EventListenerTouchOneByOne *touchOneByOne = EventListenerTouchOneByOne::create();
touchOneByOne->onTouchBegan = [&](Touch *onTouch, Event *event)
{
CCLOG("\nLambda: onTouchBegan");
if (!fSprite->getBoundingBox().containsPoint(onTouch->getLocation())) //碰撞盒检测
{
return false;
}
Vec2 v = onTouch->getLocation();
fSprite->setPosition(v.x, v.y);
return true;
};
touchOneByOne->onTouchMoved = [&](Touch* onTouch, Event* event)
{
Vec2 v = onTouch->getLocation();
fSprite->setPosition(v.x, v.y);
CCLOG("\nLambda: onTouchMoved");
};
touchOneByOne->onTouchEnded = [&](Touch* onTouch, Event* event)
{
CCLOG("\nLambda: onTouchEnded");
};
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchOneByOne, this);
6.加速度计事件
/*加速度计事件*/
// 1.启用硬件设备
Device::setAccelerometerEnabled(true);
EventListenerAcceleration* myEventListenerAccelebration = EventListenerAcceleration::create(
[&](Acceleration* acc, Event* myEvent)
{
// 2.操作
}
);
Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(myEventListenerAccelebration, this);