ImageView

1. ImageView是继承于Widget的,是cocos2d-x的基类

2. 实现了类似于按钮监听的事件,通过addTouchEventListener添加事件

  1. var imageView = new ccui.ImageView(res.BackGround_png);
  2. imageView.addTouchEventListener(touchEvent, this);
  3.  
  4. // 继承widget的组件都可以使用该触摸事件
  5. function touchEvent(sender, type){
  6. switch(type)
  7. {
  8. case ccui.widget.TOUCH_BEGAN:
  9. cc.log("Touch Down");
  10. break;
  11.  
  12. case ccui.widget.TOUCH_MOVED:
  13. cc.log("Touch Move");
  14. break;
  15.  
  16. case ccui.widget.TOUCH_ENDED:
  17. cc.log("Touch Up");
  18. break;
  19.  
  20. case ccui.widget.TOUCH_CANCELED:
  21. cc.log("Touch Canceled");
  22. break;
  23.  
  24. default:
  25. break;
  26. }

Sprite

1. Sprite类继承于Node,是cocos2dx中的渲染基类。

2. 需要通过EventListenerTouchOneByOne方式实现监听事件代码,需要根据坐标,去做精灵点击区域判断,写起来比较麻烦。

  1. var touchListener = cc.EventListener.create({
  2. event: cc.EventListener.TOUCH_ONE_BY_ONE,
  3. /**
  4. * 可选event类型列表:
  5. *
  6. * cc.EventListener.TOUCH_ONE_BY_ONE (单点触摸)
  7. * cc.EventListener.TOUCH_ALL_AT_ONCE (多点触摸)
  8. * cc.EventListener.KEYBOARD (键盘)
  9. * cc.EventListener.MOUSE (鼠标)
  10. * cc.EventListener.ACCELERATION (加速计)
  11. * cc.EventListener.CUSTOM (自定义)
  12. *
  13. */
  14.  
  15. swallowTouches: true, //设置吞没事件,在onTouchBegan方法返回true时吞没事件
  16. status: null,
  17.  
  18. onTouchBegan:function (touch, event)
  19. {
  20. console.log("在触摸东西");
  21. var target = event.getCurrentTarget();
  22. var pos = target.getParent().convertTouchToNodeSpace(touch); // 世界坐标转换 (子节点相对于父节点的位置)
  23.  
  24. // 如果触碰起始地点在本区域中
  25. if(!cc.rectContainsPoint(target.getBoundingBox(), pos))
  26. {
  27. return false;
  28. }
  29.  
  30. return true;
  31. },
  32.  
  33. onTouchMoved:function (touch, event)
  34. {
  35. console.log("在移动东西");
  36. var target = event.getCurrentTarget();
  37. var pos = target.getParent().convertTouchToNodeSpace(touch); // 世界坐标转换 (子节点相对于父节点的位置)
  38. // 如果触碰起始地点在本区域中
  39. var rect = target.getBoundingBox();
  40. rect.height *= 2;
  41. rect.width *= 2;
  42. if(!cc.rectContainsPoint(rect, pos))
  43. {
  44. if(this.status == 0)
  45. {
  46. return false;
  47. }
  48.  
  49. this.status = 0;
  50. console.log("松开手指取消发送");
  51. return true;
  52. }
  53.  
  54. if(this.status == 1)
  55. {
  56. return false;
  57. }
  58.  
  59. console.log("上滑取消发送");
  60. this.status = 1;
  61. return true;
  62.  
  63. },
  64.  
  65. onTouchEnded:function (touch, event)
  66. {
  67. return true;
  68. },
  69.  
  70. onTouchCancelled:function(touch, event)
  71. {
  72. return true;
  73. }
  74.  
  75. });
  76.  
  77. cc.eventManager.addListener(this.touchListener, node);  // 添加监听器到管理器

浅谈 cosos2d-x 的ImageView和Sprite的区别的更多相关文章

  1. 浅谈JAVA GUI中,AWT与Swing的区别、联系及优缺点

    浅谈JAVA GUI中,AWT与Swing的区别.联系及优缺点 A.区别 1.发布的时间 AWT是在JDK 1.0版本时提出的 Swing是在AWT之后提出的(JAVA 2) 2. ”重量” AWT是 ...

  2. 浅谈头文件(.h)和源文件(.cpp)的区别

    浅谈头文件(.h)和源文件(.cpp)的区别 本人原来在大一写C的时候,都是所有代码写在一个文件里一锅乱煮.经过自己开始写程序之后,发现一个工程只有一定是由多个不同功能.分门别类展开的文件构成的.一锅 ...

  3. 浅谈一下缓存策略以及memcached 、redis区别

    缓存策略三要素:缓存命中率   缓存更新策略  最大缓存容量.衡量一个缓存方案的好坏标准是:缓存命中率.缓存命中率越高,缓存方法设计的越好. 三者之间的关系为:当缓存到达最大的缓存容量时,会触发缓存更 ...

  4. 浅谈href=#与href=javascript:void(0)的区别

    #"包含了一个位置信息 默认的锚点是#top 也就是网页的上端 而javascript:void(0)  仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首 而 ...

  5. 浅谈Java语言中ArrayList和HashSet的区别

    Java语言中ArrayList和HashSet的区别 2019-04-10   13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...

  6. 浅谈JS中的typeof和instanceof的区别

    JS中的typeof和instanceof常用来判断一个变量是否为空,或者是什么类型. typeof typeof运算符返回一个用来表示表达式的数据类型的字符串. typeof一般返回以下几个字符串: ...

  7. 浅谈数通畅联ECP与EAC的区别

    最近收到很多客户的提问,AEAI ECP企业云联平台是什么产品?为什么AEAI ECP中包括集成套件?EAC也是数通畅联的产品吗?同样涉及集成两者有什么区别呢?诸如此类的问题还有很多. 其实AEAI ...

  8. 浅谈tidb事务与MySQL事务之间的区别

    MySQL是我们日常生活中常见的数据库,他的innodb存储引擎尤为常见,在事务方面使用的是扁平事务,即要么都执行,要么都回滚.而tidb数据库则使用的是分布式事务.两者都能保证数据的高一致性,但是在 ...

  9. 浅谈线程runnable和callable的使用及区别

    线程使用比较广泛,但实际上一般项目很少用上线程,线程常用于优化复杂的程序执行流程,把一些与业务关系关系不大但是必须要执行的流程使用线程的方式让子线程去执行,主流程只返回跟业务有关的信息 runnabl ...

随机推荐

  1. ifcfg命令

    ifcfg命令是一个bash脚本程序,用来设置Linux中的网络接口参数. 语法 ifcfg(参数) 参数 网络接口:指定要操作的网络接口: add/del:添加或删除网络接口上的地址: ip地址:指 ...

  2. 算法基础_递归_给定m个A,n个B,一共有多少种排列

    问题描述: 给定m个A,n个B,一共有多少种排列 解题源代码: /** * 给定m个A,n个B,问一共有多少种排列 * @author Administrator * */ public class ...

  3. TypeScript笔记

    #安装typescript [1] npm install -g typescript #编译typescript tsc test.ts //会生成test.js文件 #泛型,即使用“类型变量”,函 ...

  4. libvirt虚拟库

    转载自:https://www.ibm.com/developerworks/cn/linux/l-libvirt/index.html Libvirt 虚拟化库剖析   讲到向外扩展计算(比如云计算 ...

  5. Java学习之路-Hessian学习

    Hessian是基于HTTP的轻量级远程服务解决方案,Hessian像Rmi一样,使用二进制消息进行客户端和服务器端交互.但与其他二进制远程调用技术(例如Rmi)不同的是,它的二进制消息可以移植其他非 ...

  6. SQL中exsit和in

    本周在做ETL的时候踩了个小坑 A表中数据有18条,有字段UserID B表与A表结构相同,但只有16条数据(手动删除2条,更改2条UserID为不重复的其他值) 当 Select UserID fr ...

  7. Redis入门到高可用(十三)—— 发布订阅

    一.模型 二.主要API 1.publish(发布命令) 2.subcribe(订阅) 3.取消订阅(unsubcribe) 4.其他API 三.消息队列功能 redis实现消息队列功能 应用场景:抢 ...

  8. GDB查看堆栈局部变量

    GDB查看堆栈局部变量 “参数从右到左入栈”,“局部变量在栈上分配空间”,听的耳朵都起茧子了.最近做项目涉及C和汇编互相调用,写代码的时候才发现没真正弄明白.自己写了个最简单的函数,用gdb跟踪了调用 ...

  9. 本地资源_Asset

    数据 using System.Collections.Generic; using UnityEngine; public enum Enum_Test { A, B, C, } [System.S ...

  10. C#ImageList和ListView的使用

    一.ImageList  ImageList组件,又称为图片存储组件,它主要用于存储图片资源,然后在控件上显示出来,这样就简化了对图片的管理.ImageList组件的主要属性是Images,它包含关联 ...