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 ...
随机推荐
- alias命令(使用命令别名)
通过alias命令可以给一些命令定义别名,如,将长的难记住的命令起一个容易记住的别名,提高工作效率 alias -p 查看已有的别名列表 命名别名格式: alias 新命令名='原命令名 -参数/选项 ...
- kvm 下运行的 WINWS7磁盘空间不足 增加磁盘 实战(这个有问题,还未解决)
创建一个新硬盘: [root@NB vhost]# qemu-img create -f qcow2 add_win_desk.img 5G Formatting encryption=off clu ...
- Linq学习笔记---Linq to Xml操作
LINQ to XML的成员, 属性列表: 属性 说明 Document 获取此 XObject 的 XDocument EmptySequence 获取空的元素集合 FirstAttribut ...
- GPS NEMA 0183协议
转自:http://www.cnblogs.com/xidongs/archive/2011/02/01/1948689.html 一. NMEA0183标准语句(GPS常用语句)$GPGGA例:$G ...
- PHP求时间间隔 n天、周、月、年后的时间
<?php date_default_timezone_set('PRC'); // 设置时区 $date1 = strtotime('2015-01-01'); //把日期转换成时间戳 $da ...
- Android 注解工具 ButterKnife
Butter Knife 是 Android 视图字段和方法绑定,使用注解处理来生成样板代码. 主要特性: 在字段使用 @FindView消除findViewById调用 使用 @FindViews在 ...
- Integer Inquiry【大数的加法举例】
Integer Inquiry Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 27730 Accepted: 10764 ...
- java中文乱码解决方法汇总
public static void main(String[] argv){ try { System.out.println(“中文”);//1 ...
- hdu 3236 二维背包
明天来一发 hdu 4501 算是这题的简化版吧
- csc.rsp Invent by Microshaoft
# This file contains command-line options that the C# # command line compiler (CSC) will process as ...