views:

15

answers:

0

I am detecting touches for CCBitmapFontAtlas (just text labels) as shown in the code below. But it seems that touches are only detected slightly ABOVE the CCBitmapFontAtlases? Did something get screwed when converting between coordinate systems?

(*Note objects label1, label2, etc are CCBitmapFontAtlas)

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for( UITouch *touch in touches ) {

        CGPoint location = [touch locationInView:[touch view]];

        location = [[CCDirector sharedDirector] convertToGL:location];

        self.myGraphManager.isSliding = NO;

        CGRect rectLabel1 = CGRectMake(label1.position.x, label1.position.y, label1.contentSize.width, label1.contentSize.height);
        CGRect rectLabel2 = CGRectMake(label2.position.x, label2.position.y, label2.contentSize.width, label2.contentSize.height);
        CGRect rectLabel3 = CGRectMake(label3.position.x, label3.position.y, label3.contentSize.width, label3.contentSize.height);
        CGRect rectLabel4 = CGRectMake(label4.position.x, label4.position.y, label4.contentSize.width, label4.contentSize.height);
        CGRect rectLabel5 = CGRectMake(label5.position.x, label5.position.y, label5.contentSize.width, label5.contentSize.height);
        CGRect rectLabel6 = CGRectMake(label6.position.x, label6.position.y, label6.contentSize.width, label6.contentSize.height);


        if(CGRectContainsPoint(rectLabel1, location)){

            NSLog(@"Label 1 Touched");

        }else if(CGRectContainsPoint(rectLabel2, location)){

            NSLog(@"Label 2 Touched");

        }else if(CGRectContainsPoint(rectLabel3, location)){

            NSLog(@"Label 3 Touched");

        }else if(CGRectContainsPoint(rectLabel4, location)){

            NSLog(@"Label 4 Touched");

        }else if(CGRectContainsPoint(rectLabel5, location)){

            NSLog(@"Label 5 Touched");

        }else if(CGRectContainsPoint(rectLabel6, location)){

            NSLog(@"Label 6 Touched");

        }

    }
}