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

hyoromoのブログ

iOS/AndroidもしくはCocos2dxネタを書いています

Cocos2d-xのPageViewにチラ見せ機能を追加する

Cocos2d-x

f:id:hyoromo:20150304093426j:plain
Cocos2dxのPageViewでは前/次ページ内容をチラ見せさせ出来無さそうでしたので、今回は少しコードを弄ってチラ見せ出来るようにしてみました。

環境

  • Cocos2d-x v3.4-final

コード修正

通常、1枚のページサイズはPageViewのContextSizeと同じなっています。今回の修正は別途ページサイズを設定出来るようにし、内部でそのサイズ数を扱うよう変更します。

UIPageView.h
class CC_GUI_DLL PageView : public Layout
{
public:
    CC_SYNTHESIZE(Size, _pageSize, PageSize);
UIPageView.cpp

getContextSize().width を_pageSize.width に置換すれば良いだけです。一応変更箇所を抜粋しました。

float PageView::getPositionXByIndex(ssize_t idx)const
{
    return (_pageSize.width * (idx-_curPageIdx));
}

void PageView::updateAllPagesPosition()
{
(略)
    float pageWidth = _pageSize.width;
(略)
}

void PageView::handleReleaseLogic(Touch *touch)
{
(略)
        float pageWidth = _pageSize.width;
(略)
}
利用方法
auto winSize = Director::getInstance()->getWinSize();

auto pageView = PageView::create();
pageView->setSize(winSize);
pageView->setPageSize(Size(winSize.width * 0.5f, winSize.height));
this->addChild(pageView);
(以下、pageViewにaddPageしていく処理を省略)