ccc 多点触控
研究了一天,多点触控的点无法保存,只能模拟多点触控了
cc.Class({
extends: cc.Component,
properties: {
wheelStick:{
default:null,
type:cc.Sprite
},
hero:
{
default:null,
type:cc.Sprite
},
wheelDir:
{
default:"null",
}
},
// use this for initialization
onLoad: function () {
this.registerInput();
this.test()
},
registerInput:function()
{
var self=this
cc.eventManager.addListener({
event: cc.EventListener.TOUCH_ONE_BY_ONE,
//开始
onTouchBegan: function(touch, event) {
self.onTouchBegan(self,touch);
return true; // don't capture event
},
//移动
onTouchMoved: function(touch, event) {
self.onTouchMoved(self,touch);
},
//结束
onTouchEnded: function(touch, event) {
self.onTouchEnded(self,touch);
}
}, self.node);
},
onTouchBegan:function(self,touch)
{
//show
let touchPos=touch.getLocation()
if(touchPos.x<480)
{
let wheelPos=self.node.position
self.wheelStick.node.position=cc.pSub(touchPos,wheelPos)
//发射消息
self.wheelDir=self.figureDirFromTouchPoint(touchPos)
}
},
onTouchMoved:function(self,touch)
{
//show
let touchPos=touch.getLocation()
if(touchPos.x<480)
{
let wheelPos=self.node.position
self.wheelStick.node.position=cc.pSub(touchPos,wheelPos)
//发射消息
self.wheelDir=self.figureDirFromTouchPoint(touchPos)
}
},
onTouchEnded:function(self,touch)
{
self.wheelStick.node.position=cc.p(0,0)
self.wheelDir="null"
},
figureDirFromTouchPoint:function(touchPoint)
{
let cenPoint=this.node.position;
let arr=cc.pSub(touchPoint,cenPoint)
let angle=Math.atan2(arr.y,arr.x)* 180 / 3.14
if (angle <= 45 && angle > -45)
return "right"
if (angle <= -135 || angle > 135)
return "left"
if (angle >= 45 && angle < 135)
return "up"
if (angle <= -45 && angle >-135)
return "down"
},
update:function()
{
let dir=this.wheelDir
if(dir=="up")
this.hero.node.emit('wheelup', {
msg: '',
});
else if(dir=="down")
this.hero.node.emit('wheeldown', {
msg: '',
});
else if(dir=="left")
this.hero.node.emit('wheelleft', {
msg: '',
});
else if(dir=="right")
this.hero.node.emit('wheelright', {
msg: '',
});
},
test:function()
{
//测试角度
let tdd=require("TDD")
let cenPoint=this.node.position;
let tp1=cc.p(cenPoint.x+1,cenPoint.y+0)
tdd.assert("right"==this.figureDirFromTouchPoint(tp1),"figureDirFromTouchPoint1")
let tp2=cc.p(cenPoint.x+1,cenPoint.y+0.5)
tdd.assert("right"==this.figureDirFromTouchPoint(tp2),"figureDirFromTouchPoint2")
let tp3=cc.p(cenPoint.x+1,cenPoint.y-0.5)
tdd.assert("right"==this.figureDirFromTouchPoint(tp3),"figureDirFromTouchPoint3")
let tp4=cc.p(cenPoint.x+0,cenPoint.y+1)
tdd.assert("up"==this.figureDirFromTouchPoint(tp4),"figureDirFromTouchPoint4")
let tp5=cc.p(cenPoint.x+0.5,cenPoint.y+1)
tdd.assert("up"==this.figureDirFromTouchPoint(tp5),"figureDirFromTouchPoint5")
let tp6=cc.p(cenPoint.x-0.5,cenPoint.y+1)
tdd.assert("up"==this.figureDirFromTouchPoint(tp6),"figureDirFromTouchPoint6")
let tp7=cc.p(cenPoint.x+0,cenPoint.y-1)
tdd.assert("down"==this.figureDirFromTouchPoint(tp7),"figureDirFromTouchPoint7")
let tp8=cc.p(cenPoint.x+0.5,cenPoint.y-1)
tdd.assert("down"==this.figureDirFromTouchPoint(tp8),"figureDirFromTouchPoint8")
let tp9=cc.p(cenPoint.x-0.5,cenPoint.y-1)
tdd.assert("down"==this.figureDirFromTouchPoint(tp9),"figureDirFromTouchPoint9")
let tp10=cc.p(cenPoint.x-1,cenPoint.y+0)
tdd.assert("left"==this.figureDirFromTouchPoint(tp10),"figureDirFromTouchPoint10")
let tp11=cc.p(cenPoint.x-1,cenPoint.y+0.5)
tdd.assert("left"==this.figureDirFromTouchPoint(tp11),"figureDirFromTouchPoint11")
let tp12=cc.p(cenPoint.x-1,cenPoint.y-0.5)
tdd.assert("left"==this.figureDirFromTouchPoint(tp12),"figureDirFromTouchPoint12")
//测试发送消息
this.hero.node.emit('testmsg', {
msg: 'Hello, this is Cocos Creator',
});
},
});
ccc 多点触控的更多相关文章
- ccc 多点触控2
经过不断的思考发现,如果是两个sprite都添加触控的时候,往往直接成单点触控, 但是如果是两个node的时候在node上面点击就会变成多点触控的形式 cc.Class({ extends: cc.C ...
- [示例] Firemonkey OnTouch 多点触控应用
说明:Firemonkey OnTouch 多点触控应用,可同时多指移动多个不同控件 原码下载:[原创]TestMultitouchMove_多点触控应用_by_Aone.zip 运行展示:
- Cocos2dx 多点触控
1 最容易忽略的东西,对于ios平台,须得设置glView的属性: [__glView setMultipleTouchEnabled:YES]; 2 如果调用CCLayer的方法setTouchEn ...
- Android 多点触控与简单手势(一)
现在一般的Android手机都会使用电容触摸屏最少可以支持两点触摸,多的可能是七八个,所以基本上都会支持多点触控, android系统中应用程序可以使用多点触控的事件来完成各种手势和场景需求. And ...
- Android多点触控技术实战,自由地对图片进行缩放和移动
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11100327 在上一篇文章中我带着大家一起实现了Android瀑布流照片墙的效果, ...
- MultiTouch————多点触控,伸缩图片,变换图片位置
前言:当今的手机都支持多点触控功能(可以进行图片伸缩,变换位置),但是我们程序员要怎样结合硬件去实现这个功能呢? 跟随我一起,来学习这个功能 国际惯例:先上DEMO免费下载地址:http://down ...
- windows8 开发教程 教你制作 多点触控Helper可将任意容器内任意对象进行多点缩放
http://blog.csdn.net/wangrenzhu2011/article/details/7732907 (转) 实现方法: 对Manipulation进行抽象化 使不同容器可共用多点缩 ...
- cocos2d-x 在xcode IOS模拟器中 开启IOS多点触控
在初始化代码中,开启当前层接受触摸 this->setTouchEnabled(true); 在AppController.mm文件中,设置开启多点触控 在- (BOOL)application ...
- Android 多点触控错误处理(java.lang.IllegalArgumentException: pointerIndex out of range)
最近做View的多点触控时,每次第一次触控事件完美运行,第二次就直接崩了,错误信息如下: 01-03 00:05:44.220 4377-4410/system_process E/AndroidRu ...
随机推荐
- android 开发赚钱
原 android 开发赚钱 谁带我去看看世界 发布时间: 2015/06/09 12:05 阅读: 1589 收藏: 37 点赞: 2 评论: 5 开发android也有一年左右了,利用业余时间陆续 ...
- Tomcat部署的时候 unpackWARs="true"
在部署项目到Tomcat的时候发现当Tomcat启动的时候,项目并没有解压出来,导致系统传照片的时候找不到路径,因为,系统没有解压,所以找不到路径, 进入地址==>C:\Users\ceshi\ ...
- DNS原理
DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...
- Android Tab -- 使用ViewPager、Fragment、FragmentPagerAdapter来实现
原文地址:http://blog.csdn.net/crazy1235/article/details/42678877 效果:滑动切换:点击标签切换. 代码:https://github.com/l ...
- EF – 3.EF数据查询基础(下)数据关联
5.5.1 <关于“数据关联”,你不一定清楚的事> 这讲视频比较全面地介绍了“一对一”.“一对多”和“多对多”三种数据关联类型在关系数据库和Entity Framework数据模型中的实现 ...
- 【PHP自定义显示系统级别的致命错误和用户级别的错误】
使用方法set_error_handler可以自定义用户级别的错误和系统级别的错误信息显示和处理 用户级别的错误使用trigger_error方法产生一个用户级别的错误信息 代码示例: 系统级别的错误 ...
- 攻城狮在路上(壹) Hibernate(二)--- 第一个hibernate程序
1.直接通过JDBC API持久化实体域对象: A.java.sql常用接口和类: DriverManager:驱动程序管理器,负责创建数据库连接. Connection:代表数据库连接. State ...
- ASP.NET 自定义URL重写 分类: ASP.NET 2014-10-31 16:05 174人阅读 评论(0) 收藏
一.功能说明: 可以解决类似 http://****/news 情形,Url路径支持正则匹配. 二.操作步骤: 1.增加URL重写模块: using System; using System.IO; ...
- PGA
Server Process PGA 1.PGA作用 2.PGA構成 1)private sql area 2)session memory 3)sql ...
- Go 中的反射要点
简介 反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力.不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型. 类型以及接口 这个基本概念需要清晰,这里不详细展开. ...