当前位置: 首页 > news >正文

cocos2dx 3.x 精灵重叠时点击最上层的精灵

ps. 这个方法只适用设置精灵的触摸..

 

    //注册触摸事件..3.X后可以在这样写..不需要重新声明
    EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = [](Touch* pTouch, Event* pEvent){
        return true;
    };
    listener->onTouchMoved = [](Touch* pTouch, Event* pEvent){
    };
    listener->onTouchEnded = [](Touch* pTouch, Event* pEvent){
    };
    //注册精灵监听..第1个精灵和第2个精灵
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, spr); 
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener->clone(), spr1);

 

另一种写法

    //创建精灵
    Size size = Director::getInstance()->getWinSize();

    Sprite* sp1 = Sprite::create("sprite1.png");
    sp1->setPosition(Point(size.width * 0.5f, size.height * 0.5f));
    this->addChild(sp1);

    Sprite* sp2 = Sprite::create("sprite2.png");
    sp2->setPosition(Point(size.width * 0.5f, size.height * 0.5f));
    this->addChild(sp2);

    //注册触摸
    EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
    listener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,this);
    listener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved,this);
    listener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded,this);
    listener->setSwallowTouches(true);

    //注册精灵监听
     _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, sp1); 
    _eventDispatcher->addEventListenerWithSceneGraphPriority(listener->clone(), sp2);  

 

bool HelloWorld::onTouchBegan(cocos2d::Touch *pTouch, cocos2d::Event *pEvent){
    //获取当前点击的精灵
    Sprite* target = static_cast<Sprite*>(pEvent->getCurrentTarget());
    if (target->getBoundingBox().containsPoint(pTouch->getLocation()))
        return true;//点击到了
    
    return false;
}

 

 

void HelloWorld::onTouchMoved(cocos2d::Touch *pTouch, cocos2d::Event *pEvent){
    Sprite* target = static_cast<Sprite*>(pEvent->getCurrentTarget());
    //触摸的图片移动
    target->setPosition(target->getPosition() + pTouch->getDelta());
}

void HelloWorld::onTouchEnded(cocos2d::Touch *pTouch, cocos2d::Event *pEvent){

}

 

转载于:https://www.cnblogs.com/H-K-Home/p/6212109.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 输入一个整型数组,求所有子数组中和的最大值
  • 软件测试知识之分类
  • 算法导论学习笔记——贪心算法
  • web前端开发浏览器兼容性处理大全
  • 算法导论学习笔记——动态规划
  • Google技术学习
  • 【无聊放个模板系列】 半平面交
  • 最长公共子序列(LCS)问题
  • 01背包问题
  • JS控制文本框只能输入中文、英文、数字与指定特殊符号.
  • iOS僵尸对象之研究
  • 在一个大数组中有且仅有两个数相同,怎样尽快找出这两个数(未完成)
  • 字符串匹配算法
  • CXF:根据werservice代码生成WSDL(转)
  • 位运算的应用和实例
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 【刷算法】从上往下打印二叉树
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Joomla 2.x, 3.x useful code cheatsheet
  • js作用域和this的理解
  • Linux后台研发超实用命令总结
  • Vue.js源码(2):初探List Rendering
  • 给第三方使用接口的 URL 签名实现
  • 基于webpack 的 vue 多页架构
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 设计模式走一遍---观察者模式
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 优秀架构师必须掌握的架构思维
  • 湖北分布式智能数据采集方法有哪些?
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​1:1公有云能力整体输出,腾讯云“七剑”下云端
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • ${ }的特别功能
  • (27)4.8 习题课
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (6)添加vue-cookie
  • (Forward) Music Player: From UI Proposal to Code
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (WSI分类)WSI分类文献小综述 2024
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (搬运以学习)flask 上下文的实现
  • (带教程)商业版SEO关键词按天计费系统:关键词排名优化、代理服务、手机自适应及搭建教程
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (十)T检验-第一部分
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 中的路径问题