大神快来啊!!!ScrollView控件的 scrolltoPercentHhorizontal 方法调用滚动,就滚动一点点

ScrollView控件的 scrolltoPercentHhorizontal 方法调用滚动,就滚动一点点,是不是要一直回调这个函数才可以阿!!!求解是啊!

怎么设置的呢?控件大小和容器大小分别是多少啊?

bool LevelScrollLayer::init()
{
if (!Layout::init())
{
return false;
}
SCREEN_W = Director::getInstance()->getVisibleSize().width;//800
SCREEN_H = Director::getInstance()->getVisibleSize().height;//480
SpriteFrameCache::getInstance()->addSpriteFramesWithFile(S_LEVELSCENE_PLIST);
scrollView =ui::ScrollView::create();
addChild(scrollView);

this->setContentSize(Size(SCREEN_W , SCREEN_H));
scrollView->setBounceEnabled(true);
scrollView->setDirection(SCROLLVIEW_DIR_HORIZONTAL);
scrollView->setTouchEnabled(true);
scrollView->setSize(Size(SCREEN_W, SCREEN_H));
scrollView->setInnerContainerSize(CCSize(SCREEN_W * 6, SCREEN_H));
scrollView->setBackGroundImage("Level_1/bg5.jpg");

Point layerStartPoint = ccp(0,0);
float space = 0;
for (int i = 0; i < 6; ++i)
{
    Layout* layout = Layout::create();
    layout->setSize(scrollView->getSize());
    layout->setTouchEnabled(true);
    layout->addTouchEventListener(this,toucheventselector(LevelScrollLayer::touchImageLis));
    layout->setPosition(ccp(scrollView->getContentSize().width / 2,scrollView->getContentSize().height / 2));
    ImageView* imageView = ImageView::create();
    imageView->loadTexture("HelloWorld.png");
    imageView->setPosition(ccp(layout->getContentSize().width / 2, layout->getContentSize().height / 2));
    layout->addChild(imageView);
    layout->setPosition(layerStartPoint);
    char name;
    sprintf_s(name,"bigLevel%d",i + 1);
    imageView->setName(name);

    Text* label = Text::create();
    label->setText(CCString::createWithFormat("page %d", (i + 1))->getCString());
    label->setFontName("Marker Felt");
    label->setFontSize(30);
    label->setColor(Color3B(192, 192, 192));
    label->setPosition(ccp(layout->getContentSize().width / 2, layout->getContentSize().height / 2));
    layout->addChild(label);
    scrollView->addChild(layout);

    //初始化下一个图片的位置
    layerStartPoint = ccp(layerStartPoint.x + layout->getContentSize().width + space,layerStartPoint.y);
}
scrollView->addTouchEventListener(this,toucheventselector(LevelScrollLayer::touchImageLis));
scrollView->addEventListenerScrollView(this,scrollvieweventselector(LevelScrollLayer::touchViewScrollLis));
curBigLevel = 0;
m_bigLevel = 1;
touchBeganPosX = 0;
return true;
//PageView

}
bool LevelScrollLayer::onTouchBegan(Touch *touch, Event *unusedEvent)
{
return true;
}
void LevelScrollLayer::onTouchMoved(Touch *touch, Event *unusedEvent)
{

}
int LevelScrollLayer::getBigLevel()
{
return m_bigLevel;
}
void LevelScrollLayer::setBigLevel(int bigLevel)
{
m_bigLevel = bigLevel;
}
void LevelScrollLayer::touchImageLis(Ref *pSender , TouchEventType type)
{
float touchEndPosX = 0;
if (type == TOUCH_EVENT_BEGAN){
touchBeganPosX = scrollView->getInnerContainer()->getPositionX();
//CCLOG(“began touchBeganPosX %f”,touchBeganPosX);
//scrollToRight(1.0f,false);
//this->scrollToPercentVertical(40, 1.0f, false);
//curBigLevel ++;
//float pacent = 1.0f/6.0f * curBigLevel;
//CCLOG(“pacent %f”,pacent);
scrollView->scrollToPercentHorizontal(50, 1.0f, true);

}

容器是4000 * 480 ,滑动区域是800 * 480. 以上上源码:6:

在线等啊:3:

scrolltoPercentHhorizontal 后面的百分比设置大一点,就可以滚动距离远一点了。

问题已经解决了,放在 TOUCH_EVENT_BEGAN 这个里面不行,我拿出来就行了。

问题已经解决了,放在 TOUCH_EVENT_BEGAN 这个里面不行,我拿出来就行了:2:

一定要监听scrollview这个方法才能生效吗?在初始化scrollview的时候调用这个函数不生效的?
scrollView =ui::ScrollView::create();
addChild(scrollView);

this->setContentSize(Size(SCREEN_W , SCREEN_H)); 
scrollView->setBounceEnabled(true); 
scrollView->setDirection(SCROLLVIEW_DIR_HORIZONTAL); 
scrollView->setTouchEnabled(true); 
scrollView->setSize(Size(SCREEN_W, SCREEN_H)); 
scrollView->setInnerContainerSize(CCSize(SCREEN_W * 6, SCREEN_H)); 
scrollView->setBackGroundImage("Level_1/bg5.jpg"); 
scrollView->scrollToPercentHorizontal(50, 1.0f, true);

先forceDoLayout(),再滚动