• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

coco2dx 3.0 EventDispatcher事件派发

mysql 搞代码 4年前 (2022-01-09) 13次浏览 已收录 0个评论

在看3.0的TestCpp中的示例出现了,EventDispatcher的示例。 图片如下 添加了三张本文来源[email protected]搞@^&代*@码2网图片,但是每张点击到都会响应触摸事件,并且调整Z坐标。 按照示例的代码: Point origin = Director::getInstance()-getVisibleOrigin();Size size = Director::getInstance()

在看3.0的TestCpp中的示例出现了,EventDispatcher的示例。

图片如下

添加了三张图片,但是每张点击到都会响应触摸事件,并且调整Z坐标。

按照示例的代码:

	Point%20origin%20=%20Director::getInstance()->getVisibleOrigin();	Size%20size%20=%20Director::getInstance()->getVisibleSize();	//auto%20containerForSprite1%20=%20Node::create();	auto%20sprite1%20=%20Sprite::create("SpriteTouchEvent/1.png");	sprite1->setPosition(origin+Point(size.width/2, size.height/2) + Point(-80, 0));	addChild(sprite1);	//addChild(containerForSprite1, 10);	auto sprite2 = Sprite::create("SpriteTouchEvent/2.png");	sprite2->setPosition(origin+Point(size.width/2, size.height/2));	addChild(sprite2, 20);	auto sprite3 = Sprite::create("SpriteTouchEvent/3.png");	sprite3->setPosition(origin+Point(size.width/2, size.height/2) + Point(80, 0));	addChild(sprite3, 30);	// Make sprite1 touchable	auto listener1 = EventListenerTouchOneByOne::create();	listener1->setSwallowTouches(true);	listener1->onTouchBegan = [](Touch* touch, Event* event)	{		auto target = static_cast(event->getCurrentTarget());		Point locationInNode = target->convertToNodeSpace(touch->getLocation());		Size s = target->getContentSize();		Rect rect = Rect(0, 0, s.width, s.height);		if (rect.containsPoint(locationInNode))		{			//target->setOpacity(180);			return true;		}		return false;	};	listener1->onTouchMoved = [](Touch* touch, Event* event)	{// 		auto target = static_cast(event->getCurrentTarget());// 		target->setPosition(target->getPosition() + touch->getDelta());	};	listener1->onTouchEnded = [=](Touch* touch, Event* event)	{		auto target = static_cast(event->getCurrentTarget());		log("sprite onTouchesEnded.. ");		//target->setOpacity(255);		if (target == sprite2)		{			sprite2->setLocalZOrder(100);		}		else		{			sprite2->setLocalZOrder(20);		}		if(target == sprite1)		{			sprite1->setLocalZOrder(100);		}		else		{			sprite1->setLocalZOrder(10);		}		if(target == sprite3)		{			sprite3->setLocalZOrder(100);		}		else		{			sprite3->setLocalZOrder(30);		}	}; 	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener1, sprite1); 	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite2);	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener1->clone(), sprite3);

代码修改了一点,值为了点击哪张图片,与此同时这个图片就会把Z坐标提升。

—————————————我是在一步步的爬坑—————————————-


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:coco2dx 3.0 EventDispatcher事件派发
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址