cocos2d-x 用户事件

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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浔汐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值