2015-12-27 5 views
1

расслоение плотной Я новичок в cocos2d Js: - Добавление touchlistener на две кнопки в той же сценеTouchEventListener на кнопку Cocos2D

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; 

    } 
} 

TouchEvent вызывался только button1.

+0

Есть вопрос моего mistake.this был из-за размер кнопок. button1 была перекрывающаяся button.so button1 была на верхнем слое, поэтому кнопка была не в состоянии linston. – Dwijendra

ответ

1

Используйте этот сенсорный Слушатель события в cocos2d

расслоения плотной
// 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); 
Смежные вопросы