Cocos2dx 3.x C++言語
TopScroll.hを次のように変更してみてください。
#ifndef __ScrollView01__TopScroll__
#define __ScrollView01__TopScroll__
#include "cocos2d.h"
#include "extensions/cocos-ext.h"
USING_NS_CC;
USING_NS_CC_EXT;
class TopScroll :public Layer,
public ScrollViewDelegate // デリゲート
{
protected:
// コンストラクタ
TopScroll();
// デストラクタ
virtual ~TopScroll();
// メソッド CREATE_FUNCとの連携
bool init() override;
public:
static cocos2d::Scene* createScene();
CREATE_FUNC(TopScroll);
void scrollViewDidScroll(ScrollView *view);
void scrollViewDidZoom(ScrollView *view);
};
#endif /* defined(__ScrollView01__TopScroll__) */
TopScroll.cppを次のように変更してみてください。
#include "TopScroll.h"
// ScrollView インクルード
#include "extensions/cocos-ext.h"
USING_NS_CC; // cocos2d
USING_NS_CC_EXT; // cocos2d::extension
// _/_/_/ コンストラクタ プロパティー _/_/_/
TopScroll::TopScroll()
{
}
// MainScene デストラクタで解放 メモリーリークを防ぐ
TopScroll::~TopScroll()
{
}
// createSceneはLayerをSceneに貼り付けて返すクラスメソッドです。
// 自分自身(TopScroll)を生成し、空のSceneに貼り付けて返す簡単な処理を行っているだけです。
// これでほかのシーンからの遷移が楽に行えます。
Scene* TopScroll::createScene()
{
auto scene = Scene::create();
auto layer = TopScroll::create();
scene->addChild(layer);
return scene;
}
bool TopScroll::init()
{
if ( !Layer::init() )
{
return false;
}
// 画面サイズ取得
auto size = Director::getInstance()->getVisibleSize();
// 画面サイズでスクロールビューを作る
auto *pScrollView = ScrollView::create(size);
// スクロールビュー自体の大きさを変更したい場合
// pScrollView->setViewSize(Size(500, 500));
// バウンスを許可するか(以下は非許可)
// pScrollView->setBounceable(false);
// スクロール方向の指定
// pScrollView->setDirection(ScrollView::Direction::VERTICAL);
/*
列挙型定数 説明
Direction::BOTH 両方向
Direction::HORIZONTAL 横(水平)方向のみ
Direction::VERTICAL 縦(垂直)方向のみ
Direction::NONE 制限をなくす
*/
this->addChild(pScrollView);
// デリゲートを使うと、スクロールの状態を取得することができます。
//TopScrollレイヤーをデリゲートに設定
pScrollView->setDelegate(this);
//スクロールビューに入れるスプライトを用意
auto *pSprite = Sprite::create("Icon-304.png");
pScrollView->setContainer(pSprite);
pScrollView->setContentSize(pSprite->getContentSize());
return true;
}
// スクロール
void TopScroll::scrollViewDidScroll(ScrollView *view)
{
log("スクロール!");
}
// ズーム
void TopScroll::scrollViewDidZoom(ScrollView *view)
{
log("ズーム!");
}
GitHub ScrollView01_cocos2d-x
注意※)
ピンチ操作を感知するのですが、実際のズーム処理はべつに実装しないといけないようです。
コメントをお書きください