2014-08-31 2 views
0

SKSpriteNode를 사용하여 스프라이트 키트에 버튼을 만들려고합니다. 버튼 이미지가 눌려지면 버튼 이미지를 변경하고 프레스가 끝나는 즉시 이전 이미지로 되돌리려합니다. 무엇 내가 지금까지했던 것은 다음과 같은있다 : - 업데이트 방법 내부스프라이트 키트 iOS에서 버튼을 만드는 방법 (토글 버튼과 유사)

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

self.startTouch = [[touches allObjects][0] locationInNode:self ]; 
for (UITouch *touch in touches){ 

     CGPoint position = [touch locationInNode:self]; 
     SKNode *node = [self nodeAtPoint:position]; 

     if ([node.name isEqualToString:@"missileButton"]) { 
       TEMissileButtonNode *button = (TEMissileButtonNode*) node; 
       button.isPressed = YES; 
      } 
    } 
} 

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

    CGPoint position = [touch locationInNode:self]; 
    SKNode *node = [self nodeAtPoint:position]; 

    if ([node.name isEqualToString:@"missileButton"]) { 
     TEMissileButtonNode *button = (TEMissileButtonNode*) node; 
     button.isPressed = NO; 
    } 
} 

} 

터치가 종료 된 경우 내가 확인하려면이 메서드를 호출하고

-(void)changeMissileButton{ 
if (self.missileButton.isPressed) { 
    [self.missileButton addMoreMissileButtons]; 
    [self.missileButton setTexture:[SKTexture textureWithImageNamed:@"missileButtonPressed"]]; 
}else{ 
    [self.missileButton setTexture:[SKTexture textureWithImageNamed:@"missileButtonDeselected"]]; 
    [self.missileButton hideMissileButtons]; 
} 

} 

문제는 터치하지 않는다는 것입니다 때때로 등록. 때때로 그것은 내가 원하는 방식으로 작동합니다. 터치하면 텍스처가 변경되고 손가락을 떼면 텍스처가 이전 텍스처로 되돌아갑니다. 하지만 대부분의 경우 버튼이 제 터치에 반응하지 않습니다. 내가 놓친 게 있니?

+0

어디에서'changeMissileButton' 메서드를 호출합니까? – ZeMoon

+0

메인 장면의 업데이트 방법 내부 –

+0

그게 문제 일 수 있습니다 ... 텍스처를 초당 60 번 설정하고 있습니다! 각각의 경우에 대해 changeMissileButton 메서드에서 NSLog를 사용하고 업데이트에서 호출되는 동안 메서드가 어떻게 동작하는지 확인하십시오. 메서드 – ZeMoon

답변

0

touches 사용, touchesMoved, touchesEnded.

touchesBegan - 버튼 (SKSpriteNode)에 터치가 포함되어 있는지 확인합니다. 그렇다면 버튼 텍스처를 변경하십시오.

touchesMoved- 버튼에 터치가없는 경우 텍스처를 다시 바꿉니다.

touchesEnded- 터치 한 동안 버튼 내에서 터치가 지속되면, 텍스처를 다시 변경하십시오.

위의 내용은 수행하려는 작업을 효율적으로 수행하는 방법에 대한 논리입니다. 예, Spritekit이 버튼을 버리기로 결정한 것은 짜증나게합니다.