Cocos2d-x 3.0 PageViewを試してみる

raharu(仮名)(プログラマー)
これがダイバージェンス1%の先の世界か。。。

未だに3.0Finalからバージョンアップしてないraharuです。
この間AVアンプ買いました、テレビとリンビングPCが同じアンプ経由で接続されているので
結構便利になりましたおすすめです。

という事で今回はPageViewを試してみます。

PageViewScene.h

#include "cocos2d.h"
#include <ui/CocosGUI.h>
class PageViewScene : public cocos2d::Layer
{
public :
static cocos2d::Scene* createScene();
virtual bool init();
CREATE_FUNC(PageViewScene);
void pageviewCallBack(cocos2d::Ref * psender, cocos2d::ui::PageViewEventType type);
};

PageViewScene.cpp

#include "PageViewScene.h"
USING_NS_CC;
using namespace ui;
Scene* PageViewScene::createScene()
{
auto scene = Scene::create();
auto layer = PageViewScene::create();
scene->addChild(layer);
return scene;
}
// on "init" you need to initialize your instance
bool PageViewScene::init()
{
//初期化
if ( !Layer::init() ) return false;
//画面サイズを取得
auto windowSize = Director::getInstance()->getWinSize();
//PageViewを作成これにレイアウトを追加していく
auto pageView = PageView::create();
pageView->setTouchEnabled(true);
pageView->setSize(windowSize);
//3ページ作成する
for (int i = 0; i < 40; i++) {
//レイアウトを作成
auto layout = Layout::create();
layout->setSize(windowSize);
//画像
auto imageView = ImageView::create("BattleSceneLayout/stage/BackGround_001.png");
imageView->setAnchorPoint( Point::ANCHOR_BOTTOM_LEFT );
imageView->setScale(2.0f);
layout->addChild(imageView);
//テキスト
auto label = Text::create(StringUtils::format("%dページ",(i+1)), "fonts/Marker Felt.ttf", 30);
label->setColor(Color3B(Color3B::BLUE));
label->setPosition(Point(layout->getSize().width / 2, layout->getSize().height / 2));
layout->addChild(label);
//レイアウトをaddする
pageView->addPage(layout);
}
//イベントリスナーを追加(using namespace ui; しないと参照出来ないので注意)
pageView->addEventListenerPageView(this, pagevieweventselector(PageViewScene::pageviewCallBack));
this->addChild(pageView);
return true;
}
//コールバック
void PageViewScene::pageviewCallBack(Ref* sender, PageViewEventType type)
{
if(type == PAGEVIEW_EVENT_TURNING){
auto pageView = dynamic_cast<PageView*>(sender);
//選択されているページをログに出力
log("%ld",pageView->getCurPageIndex() + 1);
}
}

結果はこんな感じ


Cocos2dx pageView - YouTube

実はこれCocostudioでやろうと思ったんですけど
ページ数が可変だったのでロジック側での実装となりました。

CocostudioForMacのAnimationEditorを心待ちにしています(ボソッ)

ご意見マサカリ等歓迎しております。