浅谈 cosos2d-x 的ImageView和Sprite的区别
ImageView
1. ImageView是继承于Widget的,是cocos2d-x的基类
2. 实现了类似于按钮监听的事件,通过addTouchEventListener添加事件
var imageView = new ccui.ImageView(res.BackGround_png);
imageView.addTouchEventListener(touchEvent, this); // 继承widget的组件都可以使用该触摸事件
function touchEvent(sender, type){
switch(type)
{
case ccui.widget.TOUCH_BEGAN:
cc.log("Touch Down");
break; case ccui.widget.TOUCH_MOVED:
cc.log("Touch Move");
break; case ccui.widget.TOUCH_ENDED:
cc.log("Touch Up");
break; case ccui.widget.TOUCH_CANCELED:
cc.log("Touch Canceled");
break; default:
break;
}
Sprite
1. Sprite类继承于Node,是cocos2dx中的渲染基类。
2. 需要通过EventListenerTouchOneByOne方式实现监听事件代码,需要根据坐标,去做精灵点击区域判断,写起来比较麻烦。
var touchListener = cc.EventListener.create({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
/**
* 可选event类型列表:
*
* cc.EventListener.TOUCH_ONE_BY_ONE (单点触摸)
* cc.EventListener.TOUCH_ALL_AT_ONCE (多点触摸)
* cc.EventListener.KEYBOARD (键盘)
* cc.EventListener.MOUSE (鼠标)
* cc.EventListener.ACCELERATION (加速计)
* cc.EventListener.CUSTOM (自定义)
*
*/
swallowTouches: true, //设置吞没事件,在onTouchBegan方法返回true时吞没事件
status: null,
onTouchBegan:function (touch, event)
{
console.log("在触摸东西");
var target = event.getCurrentTarget();
var pos = target.getParent().convertTouchToNodeSpace(touch); // 世界坐标转换 (子节点相对于父节点的位置)
// 如果触碰起始地点在本区域中
if(!cc.rectContainsPoint(target.getBoundingBox(), pos))
{
return false;
}
return true;
},
onTouchMoved:function (touch, event)
{
console.log("在移动东西");
var target = event.getCurrentTarget();
var pos = target.getParent().convertTouchToNodeSpace(touch); // 世界坐标转换 (子节点相对于父节点的位置)
// 如果触碰起始地点在本区域中
var rect = target.getBoundingBox();
rect.height *= 2;
rect.width *= 2;
if(!cc.rectContainsPoint(rect, pos))
{
if(this.status == 0)
{
return false;
}
this.status = 0;
console.log("松开手指取消发送");
return true;
}
if(this.status == 1)
{
return false;
}
console.log("上滑取消发送");
this.status = 1;
return true;
},
onTouchEnded:function (touch, event)
{
return true;
},
onTouchCancelled:function(touch, event)
{
return true;
}
});
cc.eventManager.addListener(this.touchListener, node); // 添加监听器到管理器
浅谈 cosos2d-x 的ImageView和Sprite的区别的更多相关文章
- 浅谈JAVA GUI中,AWT与Swing的区别、联系及优缺点
浅谈JAVA GUI中,AWT与Swing的区别.联系及优缺点 A.区别 1.发布的时间 AWT是在JDK 1.0版本时提出的 Swing是在AWT之后提出的(JAVA 2) 2. ”重量” AWT是 ...
- 浅谈头文件(.h)和源文件(.cpp)的区别
浅谈头文件(.h)和源文件(.cpp)的区别 本人原来在大一写C的时候,都是所有代码写在一个文件里一锅乱煮.经过自己开始写程序之后,发现一个工程只有一定是由多个不同功能.分门别类展开的文件构成的.一锅 ...
- 浅谈一下缓存策略以及memcached 、redis区别
缓存策略三要素:缓存命中率 缓存更新策略 最大缓存容量.衡量一个缓存方案的好坏标准是:缓存命中率.缓存命中率越高,缓存方法设计的越好. 三者之间的关系为:当缓存到达最大的缓存容量时,会触发缓存更 ...
- 浅谈href=#与href=javascript:void(0)的区别
#"包含了一个位置信息 默认的锚点是#top 也就是网页的上端 而javascript:void(0) 仅仅表示一个死链接 这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首 而 ...
- 浅谈Java语言中ArrayList和HashSet的区别
Java语言中ArrayList和HashSet的区别 2019-04-10 13:22:49 一.基本区别 首先一起看个实例,其代码如下: package com.MrZ_baby.com; i ...
- 浅谈JS中的typeof和instanceof的区别
JS中的typeof和instanceof常用来判断一个变量是否为空,或者是什么类型. typeof typeof运算符返回一个用来表示表达式的数据类型的字符串. typeof一般返回以下几个字符串: ...
- 浅谈数通畅联ECP与EAC的区别
最近收到很多客户的提问,AEAI ECP企业云联平台是什么产品?为什么AEAI ECP中包括集成套件?EAC也是数通畅联的产品吗?同样涉及集成两者有什么区别呢?诸如此类的问题还有很多. 其实AEAI ...
- 浅谈tidb事务与MySQL事务之间的区别
MySQL是我们日常生活中常见的数据库,他的innodb存储引擎尤为常见,在事务方面使用的是扁平事务,即要么都执行,要么都回滚.而tidb数据库则使用的是分布式事务.两者都能保证数据的高一致性,但是在 ...
- 浅谈线程runnable和callable的使用及区别
线程使用比较广泛,但实际上一般项目很少用上线程,线程常用于优化复杂的程序执行流程,把一些与业务关系关系不大但是必须要执行的流程使用线程的方式让子线程去执行,主流程只返回跟业务有关的信息 runnabl ...
随机推荐
- 《Python编程》课程报告 python技术在数据分析中的应用之网络爬虫
摘要:... 2 1 引言 :... 2 1.1课题研究背景和研究现状... 2 1.1.1课题背景和目的... 3 1.1.2研究现状... 4 1.1.2.1语言... 4 1.1 ...
- python全栈开发 * 20 继承知识点汇总 * 180530
20 面向对象的三大特征之一(继承,多态,封装) -----继承 1.继承的定义: 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类;父类又可称为基类或超类,新建的类称为派生 ...
- python全栈开发 * 12 知识点汇总 * 180530
12 知识点总结 装饰器进阶 ⼀. 通⽤装饰器的回顾1.开闭原则: 对增加功能开放. 对修改代码封闭2.装饰器的作⽤: 在不改变原有代码的基础上给⼀个函数增加功能3.通⽤装饰器的写法:def wrap ...
- 如何查看.net framework 版本
以windows 2016 standard版本为例 通过注册表查看,找到 .NET Framework 注册表信息所在的位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsof ...
- sql 范式:1NF、2NF、3NF、BCNF(函数依赖)
第一范式(1NF) 每个属性都是不可分的基本数据项.(必须有主键,列不可分) eg:非第一范式的表:(列可再分) 学院名称 高级职称人数 教授 副教授 信电学院 3 34 管理学院 5 23 外语学院 ...
- Viewer.js插件浏览图片
https://www.jianshu.com/p/e3350aa1b0d0 Viewer.js插件浏览图片 Viewer.js插件浏览图片 Viewer.js插件浏览图片
- 【UML】NO.55.EBook.8.UML.3.001-【UML和模式应用 第3版】
1.0.0 Summary Tittle:[UML]NO.54.EBook.8.UML.3.001-[UML和模式应用 第3版] Style:DesignPattern Series:DesignPa ...
- solr6.5.1搜索引擎的部署
目录结构如下: 6.5.1版本的solr已经集成有jetty服务器(在server目录下),所以可以直接启动solr应用. 1.java环境配置好(这里不再累赘). 2.打开cmd,路径切换到bin目 ...
- js 判断浏览器型号
<html><head> <meta http-equiv="Content-Type" content="text/html;charse ...
- grunt 打包 分解(并非原创)
1. require('time-grunt')(grunt); Time how long tasks take. Can help when optimizing build times任务执行时 ...