cocos事件响应机制

auto listener = EventListenerTouchOneByOne::create();	//创建一个多点触控的监听事件
	//注:事件类型对应不同的类,如:EventListenerMouse是鼠标,EventListenerAcceleration 加速器,EventListenerKeybord键盘等,参p97
	/*
		键盘响应 onKeyPressed和onKeyReleased对应按键的按下与释放
		鼠标响应 onMouseDown,onMouseUp,onMouseMove,onMouseScroll

	*/
	 listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan, this);//设置事件回调函数	
	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);//以场景图方式注册
//  _eventDispatcher->addEventListenerWithFixedPriority(listener, 10);//以固定优先级方式注册*/
	/*注:_eventDispatcher 是一个系统定义好的Node类中的指针,所有继承于Node的子类,都可以用该指针注册事件的监听
			同样一个listener,如果有多个对象需要使用,可以使用clone函数,即参数为listener->clone()				*/

	//事件的操作
	//_eventDispatcher->pauseEventListenersForTarget(this);//暂停节点事件
	//_eventDispatcher->resumeEventListenersForTarget(this);//恢复暂停的节点事件
	//_eventDispatcher->setEnabled(false);//关闭所有监听事件,true 为开启,false为关闭
	//_eventDispatcher->removeEventListener(listener);//通过EventListener指针删除
	//_eventDispatcher->removeEventListenersForTarget(this);//通过目标对象删除

事件吞噬

listener->setEnabled(true);
//listener->setSwallowTouches(true);
listener->onTouchBegan = [](cocos2d::Touch* touch, cocos2d::Event* evt) {return true; };
鼠标点击,弹出坐标信息测试
auto listener2 = EventListenerMouse::create();
	listener2->onMouseDown = [](Event* event) //使用lambda表达式作为回调函数
	{
		EventMouse * em;
		em = dynamic_cast<EventMouse*>(event);
		Vec2 pos = em->getLocation();//
		char temp[100] = { 0 };
		sprintf(temp, "位置:%f ,%f", pos.x, pos.y);
		MessageBox(temp, NULL);
	};
	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener2, this);

键盘事件测试

auto keybdlistener = EventListenerKeyboard::create();
	keybdlistener->onKeyPressed = [](EventKeyboard::KeyCode key, Event * event) 
	{
		
		switch (key)
		{
		case EventKeyboard::KeyCode::KEY_0:
			MessageBox("keybd 0", NULL);
			break;
		case EventKeyboard::KeyCode::KEY_F1:
			MessageBox("keybd F1", NULL);
			break;
		}
		
	};
	_eventDispatcher->addEventListenerWithSceneGraphPriority(keybdlistener, this);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值