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. 以上上源码
在线等啊
scrolltoPercentHhorizontal 后面的百分比设置大一点,就可以滚动距离远一点了。
问题已经解决了,放在 TOUCH_EVENT_BEGAN 这个里面不行,我拿出来就行了。
问题已经解决了,放在 TOUCH_EVENT_BEGAN 这个里面不行,我拿出来就行了
一定要监听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(),再滚动