cocos2d - JS 单点触摸事件和鼠标事件

单点触摸事件 Demo1 :

onTouchBegan: function(touch, event){
        return true;
    },

    onTouchMoved: function(touch, event){

    },

    onTouchEnded: function(touch, event){

    },


    addListener: function() {
        cc.eventManager.addListener(cc.EventListener.create({
            event: cc.EventListener.TOUCH_ONE_BY_ONE,
            swallowTouches: true,
            onTouchBegan: this.onTouchBegan.bind(this),
            onTouchMoved: this.onTouchMoved.bind(this),
            onTouchEnded: this.onTouchEnded.bind(this)
        }), this);
    }

API :

  • 点击坐标点:
onTouchBegan: function (touch, event){
    cc.log(touch.getLocation());
    return true;
},
  • 鼠标拖动偏移量:
onTouchMoved: function (touch, event){
    cc.log(touch.getDelta());
},

单点触摸事件 Demo2:

// 创建一个事件监听器 OneByOne 为单点触摸
var listener1 = cc.EventListener.create({
    event: cc.EventListener.TOUCH_ONE_BY_ONE,
    swallowTouches: true,                       // 设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞掉事件,不再向下传递。
    onTouchBegan: function (touch, event)       //实现 onTouchBegan 事件处理回调函数
    {
        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))     // 判断触摸点是否在按钮范围内
        {
            cc.log("sprite began... x = " + locationInNode.x + ", y = " + locationInNode.y);
            target.opacity = 180;
            return true;
        }
        return false;
    },
    onTouchMoved: function (touch, event)           //实现onTouchMoved事件处理回调函数, 触摸移动时触发
    {

    },
    onTouchEnded: function (touch, event)           // 实现onTouchEnded事件处理回调函数
    {

    }
});
cc.eventManager.addListener(listener, this);        //添加侦听器

鼠标事件 Demo :

//判断当前平台是否支持鼠标事件
if("mouse" in cc.sys.capabilities) {
    var listener = cc.EventListener.create({
        event   : cc.EventListener.MOUSE,
        target  : this,
        onMouseDown : function(event){      //鼠标事件【按下】
            var pos = event.getLocation();
            var button = event.getButton();
            if(button == cc.EventMouse.BUTTON_LEFT){            //左键
                cc.log("左键按下", + pos.x + " " + pos.y);
            }else if(button == cc.EventMouse.BUTTON_RIGHT){     //右键
                cc.log("右键按下", + pos.x + " " + pos.y);
            }else if(button == cc.EventMouse.BUTTON_MIDDLE){    //滚轮
                cc.log("中间滚轮键按下");
            }
        },
        onMouseUp : function(event){        //鼠标事件【抬起】

        },
        onMouseMove : function(event){      //鼠标事件【移动】
            var pos = event.getLocation();
            cc.log("鼠标当前位置:", pos.x, pos.y);
        },
        onMouseScroll : function(event){    //鼠标事件【滚轮滚动】
            var pos = cc.p(event.getScrollX(), event.getScrollY());
            cc.log("鼠标滚轮滚动x :", pos.x + "y:" + pos.y);
        }
    });
    cc.eventManager.addListener(listener, this);
}
else
{
    cc.log("不支持鼠标事件");
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值