首页 > 其他 > 详细

cocos2d-x:解决点击拖动按钮后,所在的layer监听不到触摸事件的问题

时间:2015-01-21 23:52:54      阅读:966      评论:0      收藏:0      [点我收藏+]

点击拖动按钮后,想让所在的layer监听到屏幕的触摸事件,可以把该按钮拖动开始的时候设置setTouchEnabled为false;
例:

#include "ui/UIButton.h"

bool myDemo::init() {

  

  // 设置点击事件
  EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
  listener->onTouchBegan = CC_CALLBACK_2( myDemo::onTouchBegan, this );
  listener->onTouchMoved = CC_CALLBACK_2( myDemo::onTouchMoved, this );
  listener->onTouchEnded = CC_CALLBACK_2( myDemo::onTouchEnded, this );


  // 绑定
  getEventDispatcher()->addEventListenerWithSceneGraphPriority( listener, this );

  

  // 按钮创建
  Button *btn = ***;      
  btn ->addTouchEventListener( CC_CALLBACK_2( myDemo::BtnCallBack, this ) );

  this->addChild( btn  );

}

void myDemo::BtnCallBack( Ref *p, cocos2d::ui::Widget::TouchEventType type ) {

  Button *btn = (Button *)p; // 

  if ( type == Widget::TouchEventType::BEGAN ) {

    btn->setPosition( Vec2( btn->getPositionX() - 15, btn->getPositionY() + 15 ) );
    btn->setTouchEnabled( false );

  }

}

 

bool myDemo::onTouchBegan( cocos2d::Touch *touch, cocos2d::Event *event ) {

  return true;

}

 

void myDemo::onTouchMoved( cocos2d::Touch *touch, cocos2d::Event *event ) {

  CCLOG( "-------------------%d--------------" , a++);

}

 

void myDemo::onTouchEnded( cocos2d::Touch *touch, cocos2d::Event *event ) {


}

 

//当拖动按钮时,会进入onTouchMoved方法

cocos2d-x:解决点击拖动按钮后,所在的layer监听不到触摸事件的问题

原文:http://www.cnblogs.com/Colored-Mr/p/4240233.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!