現在開発中のアプリでPageViewを実装しましたので
備忘録としてブログに記載しておきます。
cocos2d-xで最初にプロジェクトを作成した際に
自動で作成されているHelloWorldクラスに追加した場合です。
【実装イメージ】
横にスクロールするページ数は5ページ
画面全体にPageViewを設定してますので
画面のどこをスワイプしてもページがスクロールします。
【コード】
HelloWorld.h
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using namespace cocos2d::ui; USING_NS_CC; class HelloWorld : public cocos2d::Layer { virtual bool init(); //略 CC_SYNTHESIZE_RETAIN(PageView *,_pageView,PageView); void pageViewEvent(Ref *psender, PageView::EventType type); } |
HelloWorld.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
bool HelloWorld::init() { //略 Size winSize = Director::getInstance()->getWinSize(); this->setPageView(PageView::create()); _pageView->setContentSize(Size(winSize.width,winSize.height)); _pageView->setAnchorPoint(Point(0.5,0.5)); _pageView->setPosition(Point(winSize.width / 2, winSize.height /2));; this->addChild(_pageView); for (int pageCt = 0; pageCt < 3; pageCt++) { //レイアウトを作成 auto layout = Layout::create(); layout->setSize(winSize); //テキスト auto label = Label::createWithSystemFont(StringUtils::format("%dページ",(pageCt+1)), "fonts/Marker Felt.ttf", 48); label->setColor(Color3B(Color3B::WHITE)); label->setPosition(Point(layout->getContentSize().width / 2, layout->getContentSize().height / 2)); layout->addChild(label); //レイアウトをaddする _pageView->addPage(layout); } _pageView->addEventListener(CC_CALLBACK_2(HelloWorld::pageViewEvent, this)); } void HelloWorld::pageViewEvent(Ref *pSender, PageView::EventType type) { switch (type) { case ui::PageView::EventType::TURNING: { auto pageView = dynamic_cast<PageView*>(pSender); log("%zdページ目",pageView->getCurPageIndex()); } break; default: break; } } |