本日cocos2dxでやりたいことは、スクロールができて、その中で何かメニューなりを押すことができる処理です。 実験的に、できるかどうかを含めて今回ブログで紹介をしたいと思います。
理想
実は、私がやりたいようなことを既に、このブログの記事で紹介され、コードも公開をされていました。
ただ、コードを見ても何をしているのか全然わからないので他の方法を探しました。
実装
他の方法と言うよりも、Cocos2d‐x開発のレシピ本に載っている方法なんですが、とても簡単に実装ができました。 それは、CCScrollViewクラスを使う方法です。
[c]
include "cocos-ext.h"
using namespace cocos2d::extension;
CCSprite *sprite = CCSprite::create("scroll.png");
//スクロールの範囲を設定
CCSize screllSize = CCSizeMake(600, 800);
CCScrollView *scrollView = CCScrollView::create(screllSize);
//viewのポジションを設定 scrollView->setPosition(0,320); this->addChild(scrollView,2);
//スクロールされる画像の調整
scrollView->setContainer(sprite);
scrollView->setContentOffset(ccp(0,-800));
scrollView->setContentSize(sprite->getContentSize());
//移動範囲の調整
scrollView->setDirection(kCCScrollViewDirectionVertical);
[/c]
setContentOffset()辺りを上手く調整すれば、綺麗に表示できると思います。
スクロールの方向を指定
スクロールされる方法をsetDirection()を利用して設定ができます。 上記の例では、縦方向のスクロールに対応しています。
[c]
//縦
scrollView->setDirection(kCCScrollViewDirectionVertical);
//横
scrollView->setDirection(kCCScrollViewDirectionHorizontal);
//両方
scrollView->setDirection(kCCScrollViewDirectionBoth);
[/c]
最後に
このViewの上に、CCMenuクラスを設定すれば、スクロールする且つ色々と選択できるレイアーができるのではないかと考えています。 私が利用したいのは、何かショップ的な画面を出したいのです。
本当は最初に上げたコードを理解して、これを活かして実装するのが理想なのですが、 見た目全くわかりませんでした。 デリゲートも何のことやらわからないので、技術的に進歩するには、こういった生きたコードを紐解いていく必要があるのでないかと思います。
もし、この方法以外にも良い方法があれば、是非教えて下さい。