0

私の現在の状況は次のとおりです。StoreScene という名前の CCScene を作成しました。そのシーン内で、CCLayer を初期化し、Store レイヤーと名付けました。

ここで、ユーザーが触れることができるコンテンツを含むスクロール可能なレイヤーが必要です。これを行うために、Store Container という名前の別の CCLayer を作成しました。このレイヤーのインスタンスを作成し、子として StoreScene に追加します。

StoreContainer に複数のスプライトを追加し、それぞれに固有のタグを付けました。スクロールは StoreScene 内で行われ、タッチすると Storecontainer レイヤー全体が上下に移動します。

スクロール レイヤー (ストア コンテナー) に 4 つのスプライトを追加しました。最初は、スプライト 1 は 0,10 に配置されています スプライト 2 は 0,20 に配置されています スプライト 3 は 0,30 に配置されています スプライト 4 は 0,40 に配置されています

明らかに、storecontainer レイヤー全体が移動すると、スプライトの位置も移動します。ただし、TouchesEnded メソッドでこれを行うと: if (CGRectContainsPoint(sprite1.boundingBox, touchpoint)){ NSLog(@"TouchedSprite1"); } ... スプライトごとに

各スプライトのタッチ位置は同じままです!!! 視覚的には、スプライトがうまく上下に動いています。しかし、タッチを受けたときの位置は一定のままです..これには理由がありますか?スクロール層にアプローチする他の方法はありますか? 私はすでに UIKit の scrollview と CCScrollLayer を見てきましたが、どちらも私には十分ではありません。私の方法はもっと単純かもしれませんが、計画どおりには機能しません。前もって感謝します!^_^

4

2 に答える 2

0

CCKitをチェックしてください。素敵なCCScrollLayer実装が含まれています。

于 2012-04-19T01:04:33.900 に答える
0

で実装touchesEndedしたと思いますStoreContainer。その場合、タッチの座標はそのレイヤーに対して相対的になります。これは、座標系が画面の周りのレイヤーに従っている理由を説明しています。touchesEnded代わりにシーンに実装するかStoreContainer、タッチを処理することのみを目的とする新しい固定レイヤー内にインスタンスを配置することができます。

または、現在の設定を維持し、この質問への回答を使用して、世界のタッチ座標を取得することもできます... :)

于 2012-04-18T21:53:16.320 に答える