CocoStudioV1.2.0 + Cocos2d-x V2.2.2 ScrollView 多次更新Child后显示不正常

CocoStudioV1.2.0 + Cocos2d-x V2.2.2

同一个ScrollView, 首先调用removeAllChildren, 然后添加随机数量的UIPanel(UIPanel预先在CocoStudioV1.2.0中设计好,然后通过clone得到 ), 反复添加几次后, 结果只有第一次显示完全正常,其他的显示不正常

代码如下:
ScrollTestScene.h:

#pragma once

#include “cocos2d.h”
#include “cocos-ext.h”
//#include “…/…/testBasic.h”

USING_NS_CC;
USING_NS_CC_EXT;
using namespace cocos2d::gui;

class ScrollTestScene : public CCScene
{
public:
ScrollTestScene(bool bPortrait = false);
~ScrollTestScene();

virtual void onEnter();
virtual void onExit();


void imageBtnCallback(CCObject* pSender, TouchEventType type);

protected:
gui::TouchGroup * m_pUILayer;
UIPanel * m_pItemModel;

void InitRandom( void );
int Random( int nStart, int nEnd );
void InitScrollView( void );

};

ScrollTestScene.cpp:

#include “ScrollTestScene.h”

ScrollTestScene::ScrollTestScene(bool bPortrait)
: m_pUILayer(NULL)
{
CCScene::init();
}

ScrollTestScene::~ScrollTestScene()
{

}

void ScrollTestScene::onEnter()
{
CCScene::onEnter();

m_pUILayer = gui::TouchGroup::create();
m_pUILayer->scheduleUpdate();
addChild(m_pUILayer);

// register root from json
gui::Widget * pWidget = dynamic_cast<gui::Widget*>(GUIReader::shareReader()->widgetFromJsonFile("NewProject_1/NewProject_1.ExportJson"));
m_pUILayer->addWidget(pWidget);

  ImageView * pImageView = static_cast< ImageView *>( m_pUILayer->getWidgetByName( "ImageViewBtn" ) );
pImageView->addTouchEventListener(this, toucheventselector(ScrollTestScene::imageBtnCallback));

m_pItemModel = static_cast< UIPanel *>( m_pUILayer->getWidgetByName( "PanelItem" ) );

}

void ScrollTestScene::onExit()
{
removeAllChildren();
CCArmatureDataManager::purge();
SceneReader::purge();
GUIReader::purge();
ActionManager::purge();
CCScene::onExit();
}

void ScrollTestScene::imageBtnCallback(CCObject* pSender, TouchEventType type)
{
if (type == gui::TOUCH_EVENT_ENDED)
{
InitScrollView();
}
}

void ScrollTestScene::InitRandom( void )
{
cc_timeval psv;
CCTime::gettimeofdayCocos2d(&psv, NULL);
unsigned long int seed = psv.tv_sec*1000 + psv.tv_usec/1000;
srand( seed );
}

int ScrollTestScene::Random( int nStart, int nEnd )
{
return CCRANDOM_0_1() * nEnd + nStart;
}

void ScrollTestScene::InitScrollView( void )
{
CCSize sizeItem = m_pItemModel->getSize();

ScrollView * pScrollView = static_cast<ScrollView*>(m_pUILayer->getWidgetByName("ScrollViewTest"));
if( !pScrollView ) {
    CCLOG( "ScrollViewTest not found." );
}
pScrollView->removeAllChildren();

CCSize sizeScrollOrigin = pScrollView->getSize();
CCSize sizeScroll = pScrollView->getInnerContainerSize();

InitRandom();
int nCount = Random( 1, 5 );


int nY, i;
int nRows = nCount;
int nOriginRows = sizeScrollOrigin.height / sizeItem.height;
if( sizeItem.height * nRows > sizeScrollOrigin.height ) {
    sizeScroll.height = sizeItem.height * nRows;
}else{
    sizeScroll.height = sizeScrollOrigin.height;
}
pScrollView->setInnerContainerSize( sizeScroll );

for( i = 0; i < nCount; i ++ ) {
    UIPanel * pItem = static_cast<UIPanel*>( m_pItemModel->clone() );
    if( nOriginRows >= nCount ) {
        //Item数目不足以填满SCroll时使Item在上方显示
        nY = sizeScrollOrigin.height - (i+1) * sizeItem.height;
    }else{
        nY = (nRows-1) * sizeItem.height;
    }
    pItem->setPosition( ccp ( 0, nY ) );
    pScrollView->addChild( pItem );
    pItem->setEnabled( true );

    nRows --;
}

}





CocoStudioV1.0.2 + Cocos2d-x V2.2.1没有这个问题

好的,已经记录下该问题,并发给相关人员