请问关于代码中新增一个UIWidget不显示问题

有这样的代码,加载cocostudio中导出的布局文件。
shopLayer=UILayer::create();
shopLayout=dynamic_cast(GUIReader::shareReader()->widgetFromJsonFile(goldRecharge));
shopLayer->addWidget(shopLayout);
this->addChild(shopLayer,10);

现在有这样的需求:我想新增一个CCLayerGradient对象到界面中去,但是不能遮挡住按钮

这是之前的做法
for(int i=0;igetChildren()->count();i++){
UIImageView* img_Item=dynamic_cast(scroll_item->getChildren()->objectAtIndex(i));
if(img_Item->getTag()==18){
//UIWidget* layer=UIWidget::create();
CCSprite* layer=CCSprite::create();
layer->setContentSize(CCSizeMake(img_Item->getContentSize().width-5,img_Item->getContentSize().height+5));
layer->setPosition(ccp(img_Item->getPositionX()/2+18,img_Item->getPositionY()/2+19));
ccColor4B black = ccc4(0, 0, 0, 255);
ccColor4B white = ccc4(0, 0, 0, 0);
CCLayerGradient* colorlayer=CCLayerGradient::create(black,white);
colorlayer->setContentSize(layer->getContentSize());
colorlayer->setPosition(layer->getPosition());
layer->addChild(colorlayer,99);
shopLayer->addChild(layer,99);
}
UIButton* btn_buy=dynamic_cast(img_Item->getChildByName(“Button_Buy1”));
btn_buy->addTouchEventListener(this,toucheventselector(UIGoldRechargeLayer::payForGoldCallback));
}

后来采用的是:
for(int i=0;igetChildren()->count();i++){
UIImageView* img_Item=dynamic_cast(scroll_item->getChildren()->objectAtIndex(i));
if(img_Item->getTag()==18){
UIWidget* layer=UIWidget::create();
//CCSprite* layer=CCSprite::create();
layer->setContentSize(CCSizeMake(img_Item->getContentSize().width-5,img_Item->getContentSize().height+5));
layer->setPosition(ccp(img_Item->getPositionX()/2+18,img_Item->getPositionY()/2+19));
ccColor4B black = ccc4(0, 0, 0, 255);
ccColor4B white = ccc4(0, 0, 0, 0);
CCLayerGradient* colorlayer=CCLayerGradient::create(black,white);
colorlayer->setContentSize(layer->getContentSize());
colorlayer->setPosition(layer->getPosition());
layer->addNode(colorlayer,99);
shopLayout->addChild(layer,99);
}
UIButton* btn_buy=dynamic_cast(img_Item->getChildByName(“Button_Buy1”));
btn_buy->addTouchEventListener(this,toucheventselector(UIGoldRechargeLayer::payForGoldCallback));

    } 然后就不显示遮罩了

解决了,主要是在cocostudio界面中添加一个panel,然后把箭头放入,代码中把遮挡的部件加入到该panel就可以解决了,注意设置zorder
for(int i=0;i<scroll_item->getChildren()->count();i++){
UIImageView* img_Item=dynamic_cast<UIImageView*>(scroll_item->getChildren()->objectAtIndex(i));
//根据第一条选项的位置获取到近似的需要遮挡的位置
if(img_Item->getTag()==18){
CCSprite* layer=CCSprite::create();
layer->setPosition(ccp(img_Item->getContentSize().width/2,img_Item->getContentSize().height/2));
layer->setContentSize(img_Item->getContentSize());
ccColor4B black = ccc4(0, 0, 0, 255);
ccColor4B white = ccc4(0, 0, 0, 0);
CCLayerGradient* colorlayer=CCLayerGradient::create(black,white,ccp(0,-1));
colorlayer->setContentSize(layer->getContentSize());
layer->addChild(colorlayer);
UIWidget* t=UIWidget::create();
t->addNode(layer);
t->setZOrder(0);
upLayout->addChild(t);
}