Creator 按键macro.KEY.a 键盘控制事件, 手指触摸事件 ,碰撞检测,cc.tween().to() Lerp,Quat四元素

cc.Class({
extends: cc.Component,

properties: {
    canvas: cc.Node,
    target: cc.Node
},

onLoad: function () {
    var self = this, parent = this.node.parent;
    self.canvas.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
        var touches = event.getTouches();
        if (touches.length >= 2) {       
            var touch1 = touches[0], touch2 = touches[1];
            // 获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性。
            var delta1 = touch1.getDelta(), delta2 = touch2.getDelta();                
             // 将一个点转换到节点 (局部) 空间坐标系,这个坐标系以锚点为原点。
            var touchPoint1 = parent.convertToNodeSpaceAR(touch1.getLocation());
            //用event.getTouches() 获取触摸事件的集合,  touch1.getLocation()  获取触摸点的集合
            var touchPoint2 = parent.convertToNodeSpaceAR(touch2.getLocation());
            //缩放
            var distance = touchPoint1.sub(touchPoint2);
            var delta = delta1.sub(delta2);
            var scale = 1;
            //如果横向移动大于纵向移动,就缩放x
            if (Math.abs(distance.x) > Math.abs(distance.y)) {
                scale = (distance.x + delta.x) / distance.x * self.target.scale;
            }
            //如果横向移动小于纵向移动,就缩放y
            else {
                scale = (distance.y + delta.y) / distance.y * self.target.scale;
            }
            self.target.scale = scale < 0.1 ? 0.1 : scale;
        }
    }, self.node);
}
// self.node.on(cc.Node.EventType.TOUCH_MOVE, function (event) {
//     var touches = event.getTouches();
//     if (touches.length < 2) {
//     var touch1 = touches[0];
    
//                 // 获取触点距离上一次事件移动的距离对象,对象包含 x 和 y 属性。
//                 var delta1 = touch1.getDelta();
    
//                 // 将一个点转换到节点 (局部) 空间坐标系,这个坐标系以锚点为原点。
//                 // var touchPoint1 = parent.convertToNodeSpaceAR(touch1.getLocation());
    
//                 var rotateBy = cc.rotateBy(.3, delta1.x * 2);
//                 self.node.runAction(rotateBy);
    
//             }
//         }, self.node);
//    // 如题所想,需要在TOUCH_MOVE 时,立即执行 rotateBy动作,真机上测试发现,单手指 慢慢TOUCH_MOVE,
//    //完全不执行rotateBy 动作,当单手指,快速滑动时,则会被执行,请问大神们有什么好的处理方法吗?

});

const i18n = require(‘i18n’);

cc.Class({
extends: cc.Component,

properties: {
    canvas: cc.Node,
    touchLocationDisplay: {
        default: null,
        type: cc.Label
    },
    follower: {
        default: null,
        type: cc.Node
    },
    followSpeed: 200
},

// use this for initialization
onLoad: function () {
    var self = this;
    self.moveToPos = cc.v2(0, 0);
    self.isMoving = false;
    self.canvas.on(cc.Node.EventType.TOUCH_START, function (event) {
        var touches = event.getTouches();
        var touchLoc = touches[0].getLocation();
        self.isMoving = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值