Search code examples
iphonecocos2d-iphonensdictionarycgpoint

NSDictionary to CGPoint


I am working on a game, in which i am trying to fire two different types if bullets on single tap and double tap respectively.

Heres what I am doing in my touch began method:

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

        CGPoint location = [touch locationInView: [touch view]];
        location = [[CCDirector sharedDirector] convertToGL: location];

        NSLog(@"TOUCH LOCATION IN TOUCH BEGAN  = (%f , %f)", location.x , location.y);

        NSUInteger tapCount = [touch tapCount];

        switch (tapCount)
        {
            case 1:
            {
                NSDictionary * touchloc = [NSDictionary dictionaryWithObject:[NSValue valueWithCGPoint:location] forKey:@"location"];
                [self performSelector:@selector(startTimer:) withObject:touchloc afterDelay:3];
                break;
            }   
            case 2:
            {
                [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(startTimer) object:nil];
                [self performSelector:@selector(removeBall) withObject:nil afterDelay:1];
                break;
            }

            default:
            {
                break;
            }
        }
  }

Now in my perform selector(startTimer:) I get the co-ordinates of point where I touch in NSPoint (As I am using NSDictionary) All I want to know is.. how we can convert those points to CGPoints.. ?

Any idea how can I do it?

Any help will be truly appreciated.


Solution

  • if you are using NSValue you can get CGPoint back from that using CGPointValue.

    e.g.

    NSDictionary * touchloc = [NSDictionary dictionaryWithObject:[NSValue valueWithCGPoint:location] forKey:@"location"];
        CGPoint points = [[touchloc valueForKey:@"location"] CGPointValue];