제 게임에는 두 가지 유형의 제스처가 있습니다. 단일 탭 및 보류 화면에 손가락을 쥐면 내 도청 방식이 호출 된 곳에서 touchBegan:(UITouch *)touch withEvent:(UIEvent *)event
이 호출되어 두 제스처가 모두 호출됩니다. 이 문제를 어떻게 피할 수 있습니까? UIGestureRecognizers
을 사용해야합니까, 아니면 내장 된 cocos2d 메소드를 사용하는 방법이 있습니까? 나는이 제스처가 서로 결합되어 있지 않고 독점적으로 호출되어야합니다.탭과 홀드를 구별하는 방법은 무엇입니까?
typedef NS_ENUM(NSUInteger, BPMovementState) {
kTouchUp, //Finger is not on the screen
kTouchDown //Finger is on the screen
};
@implementation HelloWorldScene
{
CCSprite *_hero;
BPMovementState _touchState;
}
- (instancetype)init
self = [super init];
if (!self) return(nil);
// Enable touch handling on scene node
self.userInteractionEnabled = YES;
_touchState = kTouchUp;
return self;
}
- (void)fixedUpdate:(CCTime)delta{
if(_touchState == kTouchDown){
//_hero slide
_hero.position = ccp(_hero.position.x + 1, _hero.position.y);
}
}
-(void) touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
_touchState = kTouchDown;
if(touch.tapCount == 1)
[_hero jump]
}
- (void)touchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
_touchState = kTouchUp;
}
터치 시작과 터치 종료 사이의 시간을 확인할 수 있습니다. 그런 다음 탭 및 대기를 인식하는 기준을 맞춤 설정할 수 있습니다. – Renaissance
톡은 우정의 신호입니다. 홀드는 사랑의 표시입니다. – quellish