cocos2D-X CCControlSlider在自定义的模态对话框里的不能滑动

void SetModalDialog::initDialog()

{

CCSprite* sprite1 = CCSprite::create("tablebackground.png");

sprite1->setPosition((ccp(CCDirector::sharedDirector()->getWinSize().width/2,CCDirector::sharedDirector()->getWinSize().height/2)));

CCMenuItemImage *pExitSetItem = CCMenuItemImage::create("exit.png","exit_pressed.png",this, menu_selector(SetModalDialog::onExitSet));

m_pMenu = CCMenu::create(pExitSetItem, NULL);

m_pMenu->setPosition(ccp(295,115));

sprite1->addChild(m_pMenu);

CCControlSlider * slider1 = CCControlSlider::create("sliderTrack1.png", "sliderProgress1.png", "sliderThumb1.png");

//滑动条

CCControlSlider * slider1 = CCControlSlider::create("sliderTrack1.png", "sliderProgress1.png", "sliderThumb1.png");

//添加回调函数

slider1->addTargetWithActionForControlEvents(this,cccontrol_selector(SetModalDialog::actionSlider1),CCControlEventValueChanged);

slider1->setPosition(ccp(170, 95));

//silder的最小值和最大值

slider1->setMinimumValue(0.0f);

slider1->setMaximumValue(100.0f);

//slider的当前值

slider1->setValue(50.0f);

sprite1->addChild(slider1);

this->addChild(sprite1);

}

void SetModalDialog::onEnter()

{

CCLayerColor::onEnter();

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-130, true);

}

void SetModalDialog::onExit()

{

CCLayerColor::onExit();

CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);

}

bool SetModalDialog::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

{

m_bTouchedMenu = m_pMenu->ccTouchBegan(pTouch, pEvent);

return true;

}

void SetModalDialog::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

{

if (m_bTouchedMenu) {

m_pMenu->ccTouchMoved(pTouch, pEvent);

}

}

void SetModalDialog::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

{

if (m_bTouchedMenu) {

m_pMenu->ccTouchEnded(pTouch, pEvent);

m_bTouchedMenu = false;

}

}

void SetModalDialog::ccTouchCancelled(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

{

if (m_bTouchedMenu) {

m_pMenu->ccTouchEnded(pTouch, pEvent);

m_bTouchedMenu = false;

}

}

//滑块回调函数

void SetModalDialog::actionSlider1(cocos2d::CCObject *pSender,CCControlEvent pCCControlEvent)

{

CCControlSlider* pSliderCtl = (CCControlSlider*)pSender;

float scale;

scale = pSliderCtl->getValue();

//slider的当前值

CCLog("CCControlSlider value = %f",scale);

}




按钮可以工作,但是滑动条无法响应。。。

游戏开发新手,正在学习,求大神指点迷津,小弟感激不尽!

声明一个子类 继承 CCControllSlider 重写 touch 方法 就可以了


#include

#include "cocos2d.h"

#include "cocos-ext.h"

class WG_GameSlider:public cocos2d::extension::CCControlSlider

{

public:

virtual bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

virtual void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

virtual void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

virtual void ccTouchCancelled(cocos2d::CCTouch *pTouch,cocos2d::CCEvent *pEvent);

static WG_GameSlider* create(cocos2d::CCSprite * backgroundSprite, cocos2d::CCSprite* pogressSprite, cocos2d::CCSprite* thumbSprite);

private:

#endif /* defined(__Holdem__WG_GameSilder__) */

#include "WG_GameSlider.h"

using namespace cocos2d;

USING_NS_CC_EXT;

bool WG_GameSlider::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

{

return CCControlSlider::ccTouchBegan(pTouch, pEvent);

}

void WG_GameSlider::ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

{

CCControlSlider::ccTouchMoved(pTouch, pEvent);

}

void WG_GameSlider::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)

{

CCControlSlider::ccTouchEnded(pTouch, pEvent);

}

void WG_GameSlider::ccTouchCancelled(cocos2d::CCTouch *pTouch,cocos2d::CCEvent *pEvent)

{

CCControlSlider::ccTouchCancelled(pTouch, pEvent);

}

WG_GameSlider* WG_GameSlider::create(cocos2d::CCSprite * backgroundSprite, cocos2d::CCSprite* pogressSprite, cocos2d::CCSprite* thumbSprite)

{

WG_GameSlider* sit = new WG_GameSlider();

if (sit && sit->initWithSprites(backgroundSprite, pogressSprite, thumbSprite)) {

sit->autorelease();

return sit;

}

else

{

CC_SAFE_DELETE(sit);

sit = NULL;

return NULL;

}

}


};

CCControlSlider * slider1 = CCControlSlider::create(“sliderTrack1.png”, “sliderProgress1.png”, “sliderThumb1.png”);
这句是粘贴的时候重复的哈。