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];
}
}
문제는 터치하지 않는다는 것입니다 때때로 등록. 때때로 그것은 내가 원하는 방식으로 작동합니다. 터치하면 텍스처가 변경되고 손가락을 떼면 텍스처가 이전 텍스처로 되돌아갑니다. 하지만 대부분의 경우 버튼이 제 터치에 반응하지 않습니다. 내가 놓친 게 있니?
어디에서'changeMissileButton' 메서드를 호출합니까? – ZeMoon
메인 장면의 업데이트 방법 내부 –
그게 문제 일 수 있습니다 ... 텍스처를 초당 60 번 설정하고 있습니다! 각각의 경우에 대해 changeMissileButton 메서드에서 NSLog를 사용하고 업데이트에서 호출되는 동안 메서드가 어떻게 동작하는지 확인하십시오. 메서드 – ZeMoon