0

0

coco2dx 3.0 EventDispatcher事件派发

php中文网

php中文网

发布时间:2016-06-07 15:12:52

|

1328人浏览过

|

来源于php中文网

原创

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

       在看3.0的testcpp中的示例出现了,eventdispatcher的示例。

图片如下

                                       coco2dx 3.0 EventDispatcher事件派发

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

按照示例的代码:

	Point origin = Director::getInstance()->getVisibleOrigin();
	Size size = Director::getInstance()->getVisibleSize();

	//auto containerForSprite1 = Node::create();
	auto sprite1 = Sprite::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坐标提升。

 

怪兽AI数字人
怪兽AI数字人

数字人短视频创作,数字人直播,实时驱动数字人

下载

 

 

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

相关专题

更多
php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
玩转 Vue3.0 新特性
玩转 Vue3.0 新特性

共19课时 | 1.8万人学习

Vue3.0 极速入门教程
Vue3.0 极速入门教程

共55课时 | 5.5万人学习

vue 3.0全新实战课程-第一季
vue 3.0全新实战课程-第一季

共51课时 | 22.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号