[Cocos2d] UIScrollViewっぽいの

この記事は最終更新日から15年以上経過しています。

cocos2d上でUIScrollViewが使いたくなったけど、CCLayerにはaddSubviewが使用できないので、それらしい動きのクラスをCCLayerを継承して作ってみた。


とか言ってみたものの既に近い動きをするプログラムがフォーラムに投稿されていたので、 そこから必要なところを継ぎ足して作らせていただきました。

ScrollLayer.h

ScrollLayer.m

  • 参考にした記事

http://www.cocos2d-iphone.org/forum/topic/3558#post-21636

記事そのままだと指を離した後にスクロールする部分が(3ページ以上の時など)に動かなかったので、修正しています。

使いたいCCLayerには

コピーしました
- (void) initScrollLayer
{
int pageMax = 3;//ページ数
CGSize s = [[CCDirector sharedDirector] winSize];
//ScrollLayer
scroll = [ScrollLayer node];
[scroll changeContentWidth:s.width*pageMax];
[self addChild:scroll];
//Label
CCLabel* l0 = [CCLabel labelWithString:@"PAGE01"
dimensions:CGSizeMake(320, 16)
alignment:UITextAlignmentCenter
fontName:@"Helvetica"
fontSize:16
];
l0.position = ccp( 160 , 240-8 );
[scroll addScrollChild:l0];
CCLabel* l1 = [CCLabel labelWithString:@"PAGE02"
dimensions:CGSizeMake(320, 16)
alignment:UITextAlignmentCenter
fontName:@"Helvetica"
fontSize:16
];
l1.position = ccp( 160+320 , 240-8 );
[scroll addScrollChild:l1];
CCLabel* l2 = [CCLabel labelWithString:@"PAGE03"
dimensions:CGSizeMake(320, 16)
alignment:UITextAlignmentCenter
fontName:@"Helvetica"
fontSize:16
];
l2.position = ccp( 160+(320*2) , 240-8 );
[scroll addScrollChild:l2];
}

みたいに記述すれば動きます。

Profile

石原 悠 / Yu Ishihara

デザインとプログラミングと編み物とヨーグルトが好きです。