これは少し説明するかもしれませんが、ここではすべての洞察を本当に感謝します。CCBritNodeのCCSpriteがCCBatchNodeの子要素であるタッチ可能なCCNodeを作成する際の問題
ショートバージョン:CCSpriteイメージが別のクラスのCCSpriteBatchNodeの子であるTouchableButton(独自のタッチを検出する)を作成するにはどうすればよいですか? (通常、CCSpriteはTouchableButton自体の子になります)。
ロングバージョン:
私はCocos2dを使ったゲームを構築しています。ゲームは、互いに走り回って相互作用するエージェント(クラスAgentView:CCNode)で満たされた風景(クラスEnvironmentView:CCLayer)に焦点を当てています。
EnvironmentViewはAgentViewオブジェクトのリストを保持し、必要に応じて(それらの対話方法に応じて)それらを作成/破棄します。
各AgentViewには、CCBatchNode(EnvironmentViewの@property)の子として追加されたCCSprite @propertyがあり、これはEnvironmentViewの子として追加されます。
私は、ユーザーがエージェントに触れることができ、ランドスケープのある場所から別の場所にエージェントを移動できる機能を実装しようとしています。
環境ビューでは多くのエージェントが動き回っているので、私はタッチ位置を取得してすべてのAgentView CCSpritesをループする標準的な方法を使用してタッチがそれらのいずれかに当たるかどうかを確認したくありませんこのアプローチを推進している回答には興味がありません)。
代わりに、それぞれのAgentViewをタッチ可能なノード(触れたときに言われたノードではなく、タッチされたときに知っているノード)にしたいと思います。
基本的には、各AgentViewのCCSpriteをTouchableButtonオブジェクトのいくつかの種類に置き換えたり、拡張したりしたいと思います。
私は、ゲーム内のUI関連ボタンにこのアプローチを使用するクラス(TouchableButtonと呼ぶ)を使用しています。彼らは親レイヤにCCTouchesBeganメソッドを実装せずにタッチされたときを知っています。しかし、私はこのユースケースに対してTouchableButtonを適用できませんでした。理由は次のとおりです。
TouchableButtonsは、initパラメータとしてCCSpriteを使用します。このCCSpriteは、ボタンのタッチ可能な部分に設定され、ボタン自体の子として追加されます。私はCCFLriteをEnvironmentViewのCCSpriteBatchNodeの子として追加しているので、エラーが発生します(2つの異なる親オブジェクトに子として何かを追加することはできません)。この葛藤を避けるために、私は物事を構造化することができます
ありがとうございました!
+1詳細な説明と書式設定が必要です。 – Kheldar