cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH
var self = this;
this.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 时吞掉事件,不再向下传递。
onTouchBegan:function(touch, event) //实现 onTouchBegan 事件处理回调函数
{ return self.checkHit(touch.getLocation()); //传递坐标
}, onTouchMoved:function(touch, event) //实现onTouchMoved事件处理回调函数, 触摸移动时触发
{
self.movePickedHitTile(touch.getLocation());
return true;
}, onTouchEnded:function(touch, event)// 实现onTouchEnded事件处理回调函数
{
self.dropTile(touch.getLocation());
return true;
}
}); cc.eventManager.addListener(this.touchListener, node); // 添加监听器到管理器
/*
这里的cc.eventManager 是一个单例对象,可直接拿来使用。
通过调用 addListener 函数可以将listener加入到管理器中。
需要注意的是第二个参数
如果传入的是一个Node对象,则加入的是SceneGraphPriority(精灵以显示优先级) 类型的listener
如果是一个数值类型的参数,则加入到的是FixedPriority 类型的listener。
*/
onTouchBegan:
checkHit:function(event)
{
var target = event.getCurrentTarget(); // 获取事件所绑定的 target, 通常是cc.Node及其子类 // 获取当前触摸点相对于按钮所在的坐标
var locationInNode = target.convertToNodeSpace(touch.getLocation());
var s = target.getContentSize();
var rect = cc.rect(0, 0, s.width, s.height); if (cc.rectContainsPoint(rect, locationInNode)) { // 判断触摸点是否在按钮范围内
console.log("sprite began... x = " + locationInNode.x + ", y = " + locationInNode.y);
target.opacity = 180;
return true;
}
return false;
}
onTouchMoved:
movePickedHitTile:function(event)
{
var target = event.getCurrentTarget();
var delta = touch.getDelta(); //获取事件数据: delta
target.x += delta.x;
target.y += delta.y;
},
onTouchEnded:
dropTile:function(pt)
{
// this.showDiscardTip(false);
//
// this.pickedTile.setScale(1);
//
// //出牌
// if(this.discardable(pt))
// {
// this.discard();
// }
// else
// {
// if(this.hitTestTile(this.hitTile, pt))
// {
// var tileSize = mb.getTileSize(this.hitTile.pos, this.hitTile.state);
// var ptWorld = this.hitTile.convertToWorldSpaceAR(cc.p(0, 0));
// this.pickedTile.x = ptWorld.x;
// this.pickedTile.y = ptWorld.y + tileSize.height / 3;
// }
// else
// {
// mb.TilePool.getInstance().restoreTile(this.pickedTile);
// this.pickedTile = null;
//
// this.hitTile.setVisible(true);
// this.hitTile = null;
// }
// } },
cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH的更多相关文章
- Ext JS 5的声明式事件监听
在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进——声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图 ...
- spring事件监听(eventListener)
原理:观察者模式 spring的事件监听有三个部分组成,事件(ApplicationEvent).监听器(ApplicationListener)和事件发布操作. 事件 事件类需要继承Applicat ...
- Android实战简易教程-第十五枪(实现ListView中Button点击事件监听)
1.main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- RecycleView 点击事件监听
1.定义RecycleView 监听接口类 1 package com.example.*****; 2 3 import android.view.View; 4 5 public interfac ...
- 【winform】基于UserControl实现webBrower组件时html页面元素加载及onclick事件监听实现
[背景]基于System.Windows.Forms.UserControl实现的webBrower组件在html内使用window.external调用winform事件失败. [解决思路]借助wi ...
- jQuery EasyUI/TopJUI输入框事件监听
jQuery EasyUI/TopJUI输入框事件监听 代码如下: <div data-toggle="topjui-panel" title="" da ...
- NavigationView的头部的事件监听
现在App的UI设计中Drawerlayout+NavigationView是一个比较常用的设计了,而以前我一般只是在Navigation中的menu(即下部的item中)添加事件监听,而今天碰到一个 ...
- [JS]笔记12之事件机制--事件冒泡和捕获--事件监听--阻止事件传播
-->事件冒泡和捕获-->事件监听-->阻止事件传播 一.事件冒泡和捕获 1.概念:当给子元素和父元素定义了相同的事件,比如都定义了onclick事件,点击子元素时,父元素的oncl ...
- [No00006A]Js的addEventListener()及attachEvent()区别分析【js中的事件监听】
1.添加时间监听: Chrom中: addEventListener的使用方式: target.addEventListener(type, listener, useCapture); target ...
随机推荐
- 洛谷P1316 丢瓶盖【二分】【贪心】
题目:https://www.luogu.org/problemnew/show/P1316 题意: 给定a个点的坐标(在一条直线上),现在要选b个点,问这b个点的最近距离的最大值是多少. 思路: 感 ...
- sqlServer自动代码提示功能
第一种方法: 首先确认 自己的sqlServer2008自身的提示功能有没有被屏蔽了! 打开sqlserver2008 -- 工具 -- 选项 -- 文本编辑器 -- 所有语言 -- 勾选 语句结束 ...
- ubuntu下hadoop0.20.2报错/dfs/name is in an inconsistent state
Hadoop0.20.2在关机重启后,namenode启动报错: 用bin/hadoop namenode -format重新格式化一下就好了.这个问题已经出现了两次.每次都格式化,显然不是一个专业的 ...
- Codeforces 1096D - Easy Problem - [DP]
题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...
- [elastic search][redis] 初试 ElasticSearch / redis
现有项目组,工作需要. http://www.cnblogs.com/xing901022/p/4704319.html Elastic Search权威指南(中文版) https://es.xiao ...
- jMeter_响应数据乱码
jMeter测试时服务响应数据乱码 方式一:修改配置文件参数 1.修改jMeter安装目录 jmeter.properties 中 sampleresult.default.encoding=UTF- ...
- Python 标准输出 sys.stdout 重定向(转)
add by zhj: 其实很少使用sys.stdout,之前django的manage.py命令的源码中使用了sys.stdout和sys.stderr,所以专门查了一下 这两个命令与print的区 ...
- mysql from dual插入实现不插入重复记录
在mysql中插入一或者多条记录的时候,要求某个字段的值唯一,但是该字段没有添加唯一性索引,可用from dual解决. select * from (select '2015080109' a,2 ...
- myeclipse项目导入到eclipse, HttpServletRequest报红现象
eclipse项目中关于导入的项目里提示HttpServletRequest 不能引用的解决办法 当使用eclipse导入外部的web工程时,有时会提示HttpServletRequest, Serv ...
- ES6面试题总结
1.说出至少5个ES6的新特性,并简述它们的作用.(简答题) 1.let关键字,用于声明只在块级作用域起作用的变量: 2.const关键字,用于声明一个常量: 3.结构赋值,一种新的变量赋值方式.常用 ...