如何在绘图Obejct Cocos2 JS HTML5中添加触摸事件

时间:2015-06-07 14:31:22

标签: events listener cocos2d-js

您好我画了一个三角形,现在我想知道如何添加一个监听器。

var dn = new cc.DrawNode();
this.addChild(dn);
var w=200;
var h=500;
var star = [
    cc.p(w,h), cc.p(w, h-200), cc.p(w*2, h-100 )
];
dn.drawPoly(star, cc.color(255,255,255,128), 1, cc.color(255,255,255,128) );

我试过这个,但这不起作用。

cc.eventManager.addListener({
    event: cc.EventListener.MOUSE,
    onMouseMove: function(event){
        var str = "MousePosition X: " + event.getLocationX() + "  Y:" + event.getLocationY();
        // do something...
    },
    onMouseUp: function(event){
        var str = "Mouse Up detected, Key: " + event.getButton();
        // do something...
    },
    onMouseDown: function(event){
        var str = "Mouse Down detected, Key: " + event.getButton();
        // do something...
    },
    onMouseScroll: function(event){
        var str = "Mouse Scroll detected, X: " + event.getLocationX() + "  Y:" + event.getLocationY();
        // do something...
    }
},dn);

当我点击时,它不仅仅是在我点击三角形时发生的。

2 个答案:

答案 0 :(得分:0)

使用cc.EventListener.TOUCH_ONE_BY_ONE

和回调是onTouchBegan(),onTouchEnded(),onTouchCancelled(),onTouchMoved()

答案 1 :(得分:0)

这就是所有事件的实际工作方式。

您需要在每个事件函数中添加一个检查,以查看触摸的坐标是否在对象内,如下所示:

onTouchesEnded: function (touches, event) {
    var touch = touches[0];

    if(cc.rectContainsPoint(event.getCurrentTarget().getBoundingBox(), touch.getLocation())){
      console.log("event within object!");
    }
}