読者です 読者をやめる 読者になる 読者になる

万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

CCScrollViewにハマる cocos2d-x 2.x

void CCBPartsAbilityEncyclopediaContainer::scrollViewDidScroll(
    CCScrollView* view) {
    CCLOG("%f", view->getContentOffset().y);
}

ここでyがなぜか0にリセットすること。

デフォルト値は

    CCLOG("before scroll_view width %f", scroll_view->getContentSize().width);
    CCLOG("before scroll_view height %f", scroll_view->getContentSize().height);
2015-07-03 18:23:44 before scroll_view width 268.000000
2015-07-03 18:23:44 before scroll_view height 429.000000

スクロールビューの横幅 268 スクロールビューの縦幅 429 のようだ。

container->getContentSize().height;

コンテナをスクロールビューのセット、

scroll_view->setContainer(container);

これをしておけば勝手にコンテナをスクロールビューの大きさを揃えてくれる。

これは見せたい部分の大きさ。

scroll_view->setViewSize(CCSize(size.width, view_height));

yが0となっていた挙動は正しい動きで、すでにスクロールが終了したと認識していた模様。

setViewSizeで設定した値よりも、スクロールビューの縦が小さいのはそもそもだが、 たとえ、

scroll_view->setDirection(kCCScrollViewDirectionVertical);

で縦スクロールにしてあっても、横も小さいとダメ。

ちなみにここで聞いていた。