忍者ブログ
  • 2024.10
  • 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
  • 2024.12
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【2024/11/23 11:13 】 |
cocosのスクロールビュー
cocosでスクロールビューを使う方法。

ここが詳しい


スクロールは設定が少し多いので気をつけよう。

基本は以下のような形。


//作成、ビューサイズの設定(スクロールビュー自体のサイズ)
ScrollView* scrollView = ScrollView::create(viewSize);

//スクロール方向の指定
scrollView->setDirection(ScrollView::Direction::VERTICAL); //HORIZONTAL, BOTH もある

//スクロールビュー自体の座標指定. 左下位置を指定すること
scrollView->setPosition(pos);

//スクロールビューの中身となるノードを指定. このノード(と子孫のノード)がスクロールすることになる
//また、このノードのサイズがScrollViewのcontentSizeになる
scrollView->setContainer(containerNode);

//スクロールビューの中身のサイズを指定。containerNodeのサイズ通りなら、指定は不要
//内部的には、scrollViewのcontentSizeでなく、containerのcontentSizeをセットしている。だからsetContainer()の後に実行しないと反映されない
scrollView->setContentSize(contentSize);

//スクロールイベントを受け取るdelegateをセットする。通常はthisにして、このメソッドを実行しているLayerクラスを指定するのが自然だろう。
scrollView->setDelegate(delegate);

//このスクロールビューを親ノード(parent)の子につける。
parent->addChild(scrollView, order);






気をつけるポイント1
ScrollViewはsetAnchorPoint()が効かない(バグ?)。setPosition()は常に左下座標を指定すること。

気をつけるポイント2
スクロールビューは、デフォルトだと一番下までスクロールした状態になっている(VERTICALまたはBOTHの場合)。
普通は一番上にスクロールさせるはずだと思う。

scrollView->setContentOffset(scrollView->minContainerOffset(), false);



こうしておくと、一番上にスクロールした状態になる。
第2引数をtrueにすると、アニメーションしながらスクロールする。
通常はtrueがいいが、この場合は一瞬でスクロールさせたいのでfalseが適切。


スクロールビューは、たとえsetVisible(false)にして見えないようにしていても、タッチイベントに反応してスクロールしてしまう。

これに関する解決は別の記事で。
PR
【2014/09/28 16:57 】 | cocos2d-x | 有り難いご意見(0)
<<cocoapod使う | ホーム | cocos2d-xでタッチ検知>>
有り難いご意見
貴重なご意見の投稿














<<前ページ | ホーム | 次ページ>>