ベースの Cocos レイヤー スクロール メカニズムを作成しました。派生クラスUIScrollView
のコードの一部を以下に示します。UIScrollView
- (id)initWithFrame:(CGRect)scrollFrame contentFrame:(CGRect)contentFrame layer:(CCNode*)layer anchor:(int)anchor_
{
self = [super initWithFrame:scrollFrame];
if (self) {
self.contentSize = contentFrame.size;
self.delegate = self;
self.bounces = YES;
self.delaysContentTouches = NO;
self.pagingEnabled = YES;
self.scrollsToTop = NO;
self.showsVerticalScrollIndicator = NO;
self.showsHorizontalScrollIndicator = NO;
self.alwaysBounceHorizontal = YES;
self.alwaysBounceVertical = YES;
self.decelerationRate = UIScrollViewDecelerationRateNormal;
[self setUserInteractionEnabled:TRUE];
[self setScrollEnabled:TRUE];
self.targetLayer = layer;
anchor = anchor_;
}
return self;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint dragPt = [scrollView contentOffset];
dragPt = [[CCDirector sharedDirector] convertToGL:dragPt];
dragPt.y = targetLayer.position.y;
dragPt.x = dragPt.x * -1 + anchor;
CGPoint newLayerPosition = CGPointMake(dragPt.x, dragPt.y);
[targetLayer setPosition:newLayerPosition];
}
新しいオフセットを取得し、ターゲット レイヤーを移動します。ターゲット iOS バージョンとして 4.3 を使用してこのプロジェクトを開始し、レイヤーが正常にスクロールしていたことは非常に奇妙です。今日、私は 5.0/above を試してみました... デバッガーで新しいオフセットが表示されますが、レイヤーはスクロール中に画面上の位置を変更しません。ページが変わったときだけ、レイヤーの新しい部分をすぐに見ることができます。Cocos 2.0 と何か関係があると思われます。
更新: これは私が 4.3 で作業していたものです
http://www.youtube.com/watch?feature=player_embedded&v=xp6bPyAVShk
繰り返しますが、これは iOS 5 以降では機能しません。どこで問題を探せばいいのか、何を探せばいいのかわかりません...少し助けてください。