码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-01-21 23:54:34      阅读:168      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!