Skip to content

cocos2d-x CCScrollViewを動かす(ver 2.0.4)

2013年1月4日

CCScrollViewを使いたいな〜って思って、調べてたら思った以上に詰まってしまった。

TestCPPを見ても、CCScrollViewのサンプルはない。

https://github.com/onerain88/CCScrollView-Demo

とかのサンプルを見てそのままコピペしてみたら動かない…。なぜなのか!

と、ソースコードを追ってみると以下の様なことがわかった。

  • 上記URLバージョンのcocos2d-xのCCScrollViewは、「setContentSize」で「setViewSize」を行なっている。
  • 今の「2.0.4」ではそれを行なっていない。
  • それ故にデフォルトの「200*200」のサイズで表示されてしまい、表示される空間がすごく狭くなってしまう。

つまり、上記URLのサンプルとはまた別に、「setViewSize」を行なって表示幅を指定してやる必要がある。

ソースコードは以下のようになる。

    CCSize size = CCDirector::sharedDirector()->getWinSize();

    scrollView = CCScrollView::create();
    CCLayer *layer = CCLayer::create();

    layer->setAnchorPoint(CCPointZero);
    layer->setPosition(CCPointZero);

    CCSprite* image = CCSprite::create("Default.png");
    image -> setPosition(ccp(0, 0));
    image -> setAnchorPoint(CCPointZero);
    layer->addChild(image);

    scrollView->setPosition(CCPointZero);
    scrollView -> setContentOffset(CCPointZero);

    layer->setContentSize(CCSizeMake(960, 1200));
    scrollView->setContentSize(CCSizeMake(960, 640));
    scrollView->setContainer(layer);
    scrollView -> setContentOffset(ccp(0,-500)); // setContainerのあとに指定しないと動作しない。
    scrollView -> setViewSize(CCSizeMake(960, 640)); // <<ここが新規に追加するポイント!

    scrollView->setDirection(kCCScrollViewDirectionVertical);

    this->addChild(scrollView);

これは縦にスクロールするスクロールビューです。横向きのサンプルばっかりだったので縦向きにしてみた。

上記の「setScrollView」を行うことで、デフォルトの200*200の表示幅から抜け出すことができる。

また、予め表示位置(オフセット)を指定したい場合は、「setContainer」の後で表記しないと動作しない。

サンプルは頭に書いてたけどこれって意味があるんだろうか…。

ともかくこれで解決!OK!

広告

From → cocos2d, cocos2d-x

コメントする

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。