2012-02-20 3 views
0

iTapping이라는 30 초 이내에 사용자가 볼을 여러 번 터치 할 수있는 앱을 디자인했습니다. 게임에서, 사용자는 볼을 탭하기 위해 화면의 아무 곳이나 탭할 수 있습니다. 사용자가 볼을 탭하지 못할 수있는 '데드 스팟 (dead spots)'이 생길 수 있도록 앱 편집을 고려했습니다. 예를 들어, 공이 오른쪽 위 모서리에 있으면 (약 100 제곱 피트의 영역에서 말하십시오) 사용자가 공을 두 드리면 아무 일도 일어나지 않습니다. 이 코드는 어떻게 작성합니까? 이것이 명확하지 않은 경우 알려주십시오.화면 영역의 도청을 방지하는 방법

CGPoint Destination; 
CGFloat xamt, yamt; 
CGFloat speed21 = 40; 
CGFloat xMin21 = 24; 
CGFloat xMax21 = 297; 
CGFloat yMin21 = 74; 
CGFloat yMax21 = 454; 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

UITouch *touch = [[event allTouches] anyObject]; 
CGPoint location = [touch locationInView:self.view]; 
if ([self Intersecting:location :Ball]) { 
    number21++; 

    int xRange = xMax21 - xMin21; 
    int yRange = yMax21 - yMin21; 

    int xRand = (arc4random() % xRange) + xMin21; 
    int yRand = (arc4random() % yRange) + yMin21; 

    Destination = CGPointMake(xRand, yRand); 
    xamt = ((Destination.x - Ball.center.x)/speed21); 
    yamt = ((Destination.y - Ball.center.y)/speed21); 


    if (number21 == 65) { 
     [timer invalidate]; 
     } 
    } 
} 

-(BOOL)Intersecting:(CGPoint)loctouch:(UIImageView *)enemyimg { 
    CGFloat x1 = loctouch.x; 
    CGFloat y1 = loctouch.y; 

    CGFloat x2 = enemyimg.frame.origin.x; 
    CGFloat y2 = enemyimg.frame.origin.y; 
    CGFloat w2 = enemyimg.frame.size.width; 
    CGFloat h2 = enemyimg.frame.size.height; 

    if ((x1>x2)&&(x1<x2+w2)&&(y1>y2)&&(y1<y2+h2)) 
     return YES; 
    else 
     return NO; 
} 

답변

2

내가 (this answer 참조) 다시 공 자체에 터치 관리를 넣어하는 것이 좋습니다 : 여기

는하는 .m 파일입니다. 따라서 터치가 수신 될 때마다 볼을 클릭하고 있는지 확인할 수 있습니다. 볼이 현재 데드 존에 있는지 확인하여 터치를 무시하면됩니다.