I made this ccTouchBegin method :
- (BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
CGPoint pos = [self getChildByTag:1].position;
CGSize size = [self getChildByTag:1].contentSize;
float padding = 3;
float w = size.width+padding*2;
float h = size.height+padding*2;
// first row
CGRect rect1 = CGRectMake(pos.x-w/2, pos.y-h/2, w/3, h/3);
CGRect rect2 = CGRectMake(pos.x-(w*(2/3)/2), pos.y-h/2, w/3, h/3);
CGRect rect3 = CGRectMake(pos.x+(w*(2/3)/2), pos.y-h/2, w/3, h/3);
//second row
CGRect rect4 = CGRectMake(pos.x-w/2, pos.y-(h*(2/3)/2), w/3, h/3);
CGRect rect5 = CGRectMake(pos.x-(w*(2/3)/2), pos.y-(h*(2/3)/2), w/3, h/3);
CGRect rect6 = CGRectMake(pos.x+(w*(2/3)/2), pos.y-(h*(2/3)/2), w/3, h/3);
//third row
CGRect rect7 = CGRectMake(pos.x-w/2, pos.y+(h*(2/3)/2), w/3, h/3);
CGRect rect8 = CGRectMake(pos.x-w/2, pos.y+(h*(2/3)/2), w/3, h/3);
CGRect rect9 = CGRectMake(pos.x-w/2, pos.y+(h*(2/3)/2), w/3, h/3);
if (CGRectContainsPoint(rect1, location)) {
NSLog(@"rect1");
} else if (CGRectContainsPoint(rect2, location)) {
NSLog(@"rect2");
} else if (CGRectContainsPoint(rect3, location)) {
NSLog(@"rect3");
} else if (CGRectContainsPoint(rect4, location)) {
NSLog(@"rect4");
} else if (CGRectContainsPoint(rect5, location)) {
NSLog(@"rect5");
} else if (CGRectContainsPoint(rect6, location)) {
NSLog(@"rect6");
} else if (CGRectContainsPoint(rect7, location)) {
NSLog(@"rect7");
} else if (CGRectContainsPoint(rect8, location)) {
NSLog(@"rect8");
} else if (CGRectContainsPoint(rect9, location)) {
NSLog(@"rect9");
}
return YES;
}
its simple, it takes the touch point, and then gets a child’s contentsize and position and divides the place where the child is located to form a 3×3 table. but right now its not working and I am not getting any NSLogs even when I try touching the entire screen. any idea whats wrong?
ccTouchBeganmethod isn’t called unless you use the CCTargetedTouchHandler as the default handler for touches in your CCLayer. To do this, override registerWithTouchDispatcher in your CCLayer class but don’t call the super implementation:You do not need to remove the delegate. The CCLayer class handles that for you.