2014-02-12 3 views
4

화면의 왼쪽 또는 오른쪽을 터치했는지에 따라 다른 동작을 실행하고 싶습니다. 따라서 왼쪽 절반을 터치하면 동작하고, 오른쪽 절반을 터치하면 다른 동작을 수행합니다.스프라이트 키트가 터치 위치를 감지합니다.

화면의 절반을 덮는 투명 버튼 이미지를 만들 수 있고 터치했을 때 동작을 실행하려면 this code을 사용한다고 가정합니다.하지만 그 방법은 생각하지 않습니다. 터치의 위치를 ​​감지하는 더 좋은 방법이 있습니까?

+0

당신은 버튼 대신 제스처 인식기를 사용할 수 있습니다. 그런 다음 터치 이벤트의 위치를 ​​가져 와서 그 지점이 화면에있는 곳을 결정하십시오. http://stackoverflow.com/questions/16618109/how-to-get-uitouch-location-from-uigesturerecognizer –

+0

도움을 주셔서 감사합니다.하지만 꽤 좋은 해결책이 떠 올랐습니다. (대답 참조) – user2255273

답변

5
이 작업을 수행 할 수있는 touchesEnded:withEvent 또는 touchesBegan:withEvent: 메서드를 재정의

:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ 
    UITouch *touch = [touches anyObject]; 

    if(touch){ 
     if([touch locationInView:self.view]>self.size.width/2){ 
      [self runTouchOnRightSideAction]; 
     }else{ 
      [self runTouchOnLeftSideAction]; 
     } 
    } 
} 
+0

고마워,하지만 방금 솔루션을 발견하고 몇 분 전에 게시했습니다. – user2255273

+0

@ user2255273 죄송합니다. 귀하의 게시물을 게시 할 때 답변을 작성하는 중이었습니다. – 68cherries

+0

문제가 없으며 버전이 더 깨끗합니다! 감사 – user2255273

3

다음 코드를 작성했으며 완벽하게 작동합니다.

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

    UITouch *touch = [touches anyObject]; 
    CGPoint touchLocation = [touch locationInNode:self]; 

    // If left half of the screen is touched 
    if (touchLocation.x < self.size.width/2) { 
     // Do whatever.. 
    } 

    // If right half of the screen is touched 
    if (touchLocation.x > self.size.width/2) { 
     // Do whatever.. 
    } 
} 
관련 문제