cocos2d-js | 触摸事件

现在Layer层的onEnter方法里create一个listener,指明事件为单点触摸,然后声明三个触摸事件

​
​
    onEnter : function () {
        this._super();

        var listener = cc.EventListener.create({

            event : cc.EventListener.TOUCH_ONE_BY_ONE,

            //是否吞没事件
            swallowTouches : true,

            onTouchBegan : this.onTouchBegan,
            onTouchMoved : this.onTouchMoved,
            onTouchEnded : this.onTouchEnded,

        });

        cc.eventManager.addListener(listener, this.getChildByTag(123))//123是精灵的tag

    },

​

​

然后实现这三个触摸回调函数

​
​
​
    onTouchBegan : function (touch, event) {
        cc.log("TouchBegan");
        
        //获取点击到的精灵
        var target = event.getCurrentTarget();

        //世界坐标转换为本地坐标
        var locationInNode = target.convertToNodeSpace(touch.getLocation());
        
        //获取精灵大小尺寸
        var size = target.getContentSize();

        //创建精灵的边界
        var rect = cc.rect(0, 0, size.width, size.height);
        
        //判断是否点击到精灵
        if (cc.rectContainsPoint(rect, locationInNode)) {
            cc.log("Touched");
        
            //点击到向下传递,调用onTouchMoved
            return true;
        }

        //没点击到,终止传递
        return false;

    },

    onTouchMoved : function (touch, event) {
        cc.log("TouchMoved");

        //获取点击到的精灵
        var target = event.getCurrentTarget();

        //获取下一帧的点击坐标
        var delta = touch.getDelta();

        //移动精灵
        target.x += delta.x;
        target.y += delta.y;

    },

    onTouchEnded : function (touch, event) {
        
    },

​

​

​

猜你喜欢

转载自blog.csdn.net/u011607490/article/details/81388344