2 つの CCLayers を互いに積み重ねています。どちらもタッチ対応です。最上層の CCLayer がタッチに応答して消費し、最下層が最上層が消費するタッチに反応しないようにします。
最上層には、次のような CCTouchBegan メソッドがあります。
- (BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
NSLog(@"touched!");
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
//DO STUFF WITH TOUCH
return YES;
}
最下層には、次のような CCTouchesEnded メソッドがあります。
- (void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
//choose one of the touches to work with
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
//DO STUFF WITH THE TOUCH
}
その結果、最上位レイヤーはタッチを消費せず、まったく応答しません。最下層のみがタッチに反応します。