关于CCControlSlider在模态窗口的实现

实现CCControlSlider,却在模态窗口中不能触摸,该怎么办。。代码如下:
PopupLayer.h


#ifndef TestCpp_PopupLayer_h
#define TestCpp_PopupLayer_h

#include "cocos2d.h"
#include "cocos-ext.h"

#include "MySlider.h" 

using namespace cocos2d;
using namespace cocos2d::extension;

class PopupLayer: public CCLayer{
public:
        PopupLayer();
        ~PopupLayer();

        virtual bool init();
        CREATE_FUNC(PopupLayer);

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

        static PopupLayer* create(const char* backgroundImage);
}

#endif

PopupLayer.cpp

#include "PopupLayer.h"

PopupLayer::PopupLayer():
        m__pMenu(NULL)
        , m_contentPadding(0)
        , m_contentPaddingTop(0)
        , m_callbackListener(NULL)
        , m_callback(NULL)
        , m__sfBackGround(NULL)
        , m__s9BackGround(NULL)
        , m__ltContentText(NULL)
        , m__ltTitle(NULL)

        , m__controlSlider(NULL)                        // 新增
{

}

PopupLayer::~PopupLayer(){
        CC_SAFE_RELEASE(m__pMenu);
        CC_SAFE_RELEASE(m__sfBackGround);
        CC_SAFE_RELEASE(m__ltContentText);
        CC_SAFE_RELEASE(m__ltTitle);
        CC_SAFE_RELEASE(m__s9BackGround);

        CC_SAFE_RELEASE(m__controlSlider); 
}

bool PopupLayer::init(){
        bool bRef = false;
        do{
                CC_BREAK_IF(!CCLayer::init());
                this->setContentSize(CCSizeZero);

                // 初始化需要的 Menu
                CCMenu* menu = CCMenu::create();
                menu->setPosition(CCPointZero);
                setMenuButton(menu);

                setTouchEnabled(true);

                bRef = true;
        }while(0);
        return bRef;
}

void PopupLayer::registerWithTouchDispatcher(){
        // 这里的触摸优先级设置为 -128 这保证了,屏蔽下方的触摸
        CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -128, true);
}

bool PopupLayer::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent){
        //
        CCLog("PopupLayer touch");
        return true;
}

PopupLayer* PopupLayer::create(const char *backgroundImage){
        PopupLayer* ml = PopupLayer::create();
        ml->setSpriteBackGround(CCSprite::create(backgroundImage));
        ml->setSprite9BackGround(CCScale9Sprite::create(backgroundImage));
        return ml;
}

// 新增
bool PopupLayer::addSlider(const char* sliderTrack, const char* sliderProgress, const char* slider_knob){
        CCSprite* trackSp = CCSprite::create(sliderTrack);
        CCSprite* progressSp = CCSprite::create(sliderProgress);
        CCSprite* knobSp = CCSprite::create(slider_knob);

        MySlider* slider = static_cast<MySlider*>(CCControlSlider::create(trackSp, progressSp, knobSp));
        slider->setAnchorPoint(ccp(0.5f, 1.0f));
        slider->setMinimumValue(0.0f);
        slider->setMaximumValue(100.0f);
        slider->setScale(1.8f);
        slider->addTargetWithActionForControlEvents(this, cccontrol_selector(PopupLayer::valueChanged), CCControlEventValueChanged);
        setControlSlider(slider);

        return true;
}

void PopupLayer::valueChanged(CCObject* pSender, CCControlEvent controlEvent){
        CCLOG("-----------------------------------Volumn");
        //  拿到操作对象
        MySlider* pSlider = (MySlider*)pSender;
        float scale;
        scale = pSlider->getValue();
        CCLog("value = %f", scale);
}

最后是实现的代码,

// 音量调节弹出框
void MenuLayer::popupVolumnLayer(){
        CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
        CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

        // 定义一个弹出层,传入一张背景图
        PopupLayer* pl = PopupLayer::create("menuforml.png");

        // ContentSize 是可选的设置,可以不设置,如果设置把它当作 9 图缩放
        pl->setContentSize(CCSizeMake(350, 300));

        // 添加slider
        pl->addSlider("sliderTrack2.png", "sliderProgress2.png", "slider_knob.png");

        // 添加到当前层
        this->addChild(pl, 10);

}

实现CCControlSlider,却在模态窗口中不能触摸,该怎么办T_T