0

CCBigSprite および CCSmallSprite クラスは CCSprite から継承されます。
spr1、spr2 はそれらのインスタンスです。

両方のクラスのプロトコル CCTargetedTouchDelegate からオーバーライドされたすべての ccTouchesStart、ccTouchesMove、ccTouchesEnd メソッド。

問題 : 通常、タッチ イベントは期待どおりに機能し、スプライトがオーバーラップするまで、任意のスプライト インスタンスに対して適切に機能します。
(CCSmallSprite *spr2) がタッチされた場合、タッチ イベントは (CCBigSprite *spr1) に対して機能します。

ここでのオーバーラップの問題と、表示されている画像の正確な位置のためです。


spr2を押すと、sp1の代わりにタッチイベントが機能するはずです。

この致命的な問題を解決するにはどうすればよいですか?

ここに画像の説明を入力

両方のクラスには、このオーバーライドされたメソッド same があります。

-(void)onEnter {
    [super onEnter];
    [[[CCDirector sharedDirector]touchDispatcher]addTargetedDelegate:self
priority:self.touchPriority swallowsTouches:YES];
}

それは意味がありますか?

また、
setPriority は何も変更しませんでした。

手動で変更しています。

[spr2 setTouchPriority:1];[spr1 setTouchPriority:2];//低いほうが優先度が高いことを意味し、逆もまた同様です。役に立ちませんでした。

これは cocos2d-iphone 2.0 安定版の問題でしょうか?

4

1 に答える 1

2

描画順序は、タッチイベントの順序には影響しません。

上の画像で小さなスプライトをタップすると、CCTouchDispatcherに登録されたスプライトの順序のみが、小さなスプライトと大きなスプライトのどちらがファーストタッチイベントを受け取るかを決定します。

于 2013-02-13T23:21:53.807 に答える