まあ、まず第一に、あなたが懸念している場合、つまり、(シミュレータではなくデバイス上で) 不適切な応答時間を確認または測定している場合にのみ、パフォーマンスについて懸念する必要があります。
別のノードに関係するタッチを検出することは避けます。ソフトウェア的に厄介になる可能性があります。タッチが検出ノードにとって関心のあるオブジェクトの場所にある場合、私は厳密に YES (ccTouchBegan から) を返す傾向があります。NO を返すと、ディスパッチャーは、そのような CCNode がバイトするまで、タッチを他のハンドラー (コンソールの「下」) に渡します。次のような種類:
- (void) onEnter{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
[super onEnter];
}
- (void) onExit{
[[[CCDirector sharedDirector] touchDispatcher] removeDelegate:self];
[super onExit];
}
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
if (!_visible || !_enabled) {
return NO;
}
CGPoint loc = [touch locationInView:touch.view];
loc = [[CCDirector sharedDirector] convertToGL:loc];
if ([self containsPoint:loc]) {
// do your thing here !
return YES;
}
return NO;
}
-(BOOL) containsPoint:(CGPoint) location {
// determine here whether this node should be handling
// this touch.
}