4

現在、CCScrollLayer (cocos2d 拡張クラス内) クラスを使用してメニュー システムを実装しています。うまく機能していますが、画面に他のボタンを配置したいと思います。スクロール可能な領域はデフォルトで画面全体です。

コンテンツのサイズをいじってみましたが、サイコロはありません。少し読んだ後、コンテンツ サイズが CCLayers の動作ごとに画面サイズに設定されていることがわかりました。ユーザーは、CCNode でラップしてスケーリングすることを提案しましたが、これは役に立ちませんでした。

提案やサンプルコードはありますか? 私はこれが可能であるべきだと考えなければなりません。

4

3 に答える 3

0

CAScrollLayer驚くほど単純で、混乱するかもしれません。

コンテンツレイヤーを追加するだけです。

[_scrollLayer addSublayer:_contentLayer];

画面に表示する四角形を設定するには、スクロールレイヤーの境界またはフレームを設定します。

[_scrollLayer setBounds:visibleBounds];

コンテンツのサイズをそれぞれ設定します。コンテンツのサイズは大きくても小さくてもかまいません。

[_contentLayer setBounds:currentContextBounds];

コンテンツが大きく、特定のポイントまでスクロールする場合は、スクロールレイヤーの使用scrollToPoint:またはscrollToRect:メソッドを使用します。

必要に応じて、独自のスクロールインジケーターやバーなどを実装する必要があります。

于 2011-11-04T06:18:55.277 に答える
0

私はスクロール ビューではなくテーブル ビューを使用していますが、どちらも同じ親 [scroll view doh] を共有しています。コンテンツのサイズを設定した後、clipToBounds をオンにしましたか?

このコンストラクターを使用することをお勧めします。

/**
 * Init this object with a given size to clip its content.
 *
 * @param size view size
 * @return initialized scroll view object
 */
- (id)initWithViewSize:(CGSize)size;
于 2011-11-04T07:50:15.840 に答える
0

残念ながら、基本的に多くのコードを書き直さないと、CCLayer のサイズを変更できない (または contentSize がタッチ イベントに影響しない) ようです。

ただし、機能していると思われる回避策を見つけました。ccTouch イベントの開始と移動では、UITouch を cocos2D 空間に変換した後、目的の境界を確認します。それらが境界内にない場合は戻り、移動の場合は手動で TouchEnded を呼び出します。TouchEnded は、最初のタッチ ポイントもチェックし、範囲外の場合は無視します。

物事は望みどおりに機能しているようです。詳しい情報が見つかれば追記します。ありがとうございました。

于 2012-05-27T06:06:54.403 に答える