0

ベースの 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 以降では機能しません。どこで問題を探せばいいのか、何を探せばいいのかわかりません...少し助けてください。

4

1 に答える 1

0

CCBReaderライブラリから CCScrollViewを使用できます

ここに github リポジトリを追加します https://github.com/cocos2d/CCBReader

このライブラリは、Cocos2D のグラフィカル インターフェイス ビルダーである Cocos Builder のリーダーに関するもので、無料です。

Cocos2D は、cocos レイヤーでの uikit の使用を推奨していません。CCScrollView は実装が簡単で、cocos2D の最新バージョンとターゲット 4.3 以降で動作します。

編集: CCScrollLayer
は、GitHub リポジトリのページングをサポートします

https://github.com/cocos2d/cocos2d-iphone-extensions/tree/master/Extensions/CCScrollLayer

新しいバージョンの cocos2D のタッチ デリゲート用に、このクラスを少し変更する必要があるかもしれません。

于 2013-04-24T05:04:59.573 に答える