按钮cocos2d js上的TouchEventListener

时间:2015-12-27 09:57:25

标签: cocos2d-js

我是cocos2d jS的新手: -   在同一场景中的两个按钮上添加touchlistener

    button.addTouchEventListener(this.touchEvent, this);
    button1.addTouchEventListener(this.touchEvent, this);

touchEvent: function(sender,type)
{
    switch (type)
    {
    case ccui.Widget.TOUCH_BEGAN:
        sender.setBright(false);
        break;

    case ccui.Widget.TOUCH_MOVED:
        sender.setBright(false);
        break;

    case ccui.Widget.TOUCH_ENDED:
        sender.setBright(true);
        break;

    case ccui.Widget.TOUCH_CANCELLED:
        sender.setBright(true);
        break; 
    default:
        break;

    }
}

仅为button1调用touchEvent。

1 个答案:

答案 0 :(得分:1)

在cocos2d js中使用此触摸事件侦听器

    // Create three sprites with images for the buttons
    var sprite1 = cc.Sprite.create("Images/CyanSquare.png");
    sprite1.x = size.width/2 - 80;
    sprite1.y = size.height/2 + 80;
    this.addChild(sprite1, 10);

    var sprite2 = cc.Sprite.create("Images/MagentaSquare.png");
    sprite2.x = size.width/2;
    sprite2.y = size.height/2;
    this.addChild(sprite2, 20);

    var sprite3 = cc.Sprite.create("Images/YellowSquare.png");
    sprite3.x = 0;
    sprite3.y = 0;
    sprite2.addChild(sprite3, 1);



    // Create a single touch event listener and write the callback code
    var listener1 = cc.EventListener.create({
    event: cc.EventListener.TOUCH_ONE_BY_ONE,
    // When "swallow touches" is true, then returning 'true' from the onTouchBegan method will "swallow" the touch event, preventing other listeners from using it.
    swallowTouches: true,
    //onTouchBegan event callback function
    onTouchBegan: function (touch, event) { 
        // event.getCurrentTarget() returns the *listener's* sceneGraphPriority node.   
        var target = event.getCurrentTarget();  

        //Get the position of the current point relative to the button
        var locationInNode = target.convertToNodeSpace(touch.getLocation());    
        var s = target.getContentSize();
        var rect = cc.rect(0, 0, s.width, s.height);

        //Check the click area
        if (cc.rectContainsPoint(rect, locationInNode)) {       
            cc.log("sprite began... x = " + locationInNode.x + ", y = " + locationInNode.y);
            target.opacity = 180;
            return true;
        }
        return false;
    },
    //Trigger when moving touch
    onTouchMoved: function (touch, event) {         
        //Move the position of current button sprite
        var target = event.getCurrentTarget();
        var delta = touch.getDelta();
        target.x += delta.x;
        target.y += delta.y;
    },
    //Process the touch end event
    onTouchEnded: function (touch, event) {         
        var target = event.getCurrentTarget();
        cc.log("sprite onTouchesEnded.. ");
        target.setOpacity(255);
        //Reset zOrder and the display sequence will change
        if (target == sprite2) {                    
            sprite1.setLocalZOrder(100);
        } else if (target == sprite1) {
            sprite1.setLocalZOrder(0);
        }
    }
});



//Add event listener to event dispatcher

// add listeners to cc.eventManager
cc.eventManager.addListener(listener1, sprite1);
cc.eventManager.addListener(listener1.clone(), sprite2);
cc.eventManager.addListener(listener1.clone(), sprite3);