제스처 인식기를 구현하려고합니다. 다음 단계를로드 할 때까지 모든 것이 잘 작동하고 다음 단계로 넘어갈 때 다음 단계로 넘어갈 수 있습니다. 제스처를 사용하면 프로그램이 충돌합니다.제스처 인식기가 다음 레벨에서 충돌 함
레벨이 완료되면 "다음 레벨 - 다음 단계로 이동하려면 터치"라는 제목이 나타납니다. 제스처 인식기를 추가 할 때까지 탭을하면 레벨이 증가하고 [super initWithSize : size]를 사용하여 동일한 장면을 레벨 번호에 따라 새로운 변수로 나타납니다. 제스처 인식기를 추가하면 "다음 레벨 - 다음 단계로 이동 터치"가 화면에 표시되면서 탭이 여전히 다음 단계로 이동하지만 팬이 앱을 중단시킵니다.
내 제스처 인식기가 아래에 있습니다.
- (void)didMoveToView:(SKView*)view {
UIGestureRecognizer *spinner = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
[self.view addGestureRecognizer:spinner];
}
- (void)handlePanGesture:(UIPanGestureRecognizer *)gestureRecognizer {
CGPoint velocity = [gestureRecognizer velocityInView:self.view];
if (velocity.y > 0) {
NSLog(@"gesture went down");
} else {
NSLog(@"gesture went up");
}
}
문제는 내가 수준을 증가 시키거나 그래서 여기에 터치를 구현하고있는 방법에있을 수는 접촉이 방법과 수준 증가분 코드를
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
BOMPlayerNode *playerNode = (BOMPlayerNode*)[self childNodeWithName:@"Player"];
if (!self.restart) {
for (UITouch *touch in touches) {
CGPoint positionInScene = [touch locationInNode:self];
int duration = 1.0;
SKAction * actionMove = [SKAction moveTo:CGPointMake(positionInScene.x, positionInScene.y) duration:duration];
[playerNode runAction:actionMove];
}
} else if (self.restart && self.nextLevel) {
levelCount++;
for (SKNode *node in [self children]) {
[node removeFromParent];
}
BOMGamePlayScene *scene = [BOMGamePlayScene sceneWithSize:self.view.bounds.size];
[self.view presentScene:scene];
} else if (self.restart && self.tryAgain) {
for (SKNode *node in [self children]) {
[node removeFromParent];
}
BOMGamePlayScene *scene = [BOMGamePlayScene sceneWithSize:self.view.bounds.size];
[self.view presentScene:scene];
}
}
- (void) update:(NSTimeInterval)currentTime {
if (GameOverConditions) {
self.tryAgain = YES;
self.restart = YES;
[self performGameOver];
} else if (NextLevelConditions) {
self.restart = YES;
self.nextLevel = YES;
[self performNextLevel];
}
}
- (void) performGameOver {
if (!self.gameOverDisplayed) {
BOMGameOverNode *gameOver = [BOMGameOverNode gameOverAtPosition:CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))];
self.gameOverDisplayed = YES;
}
}
- (void) performNextLevel {
if (!self.nextLevelDisplayed) {
BOMNextLevelNode *nextLevel = [BOMNextLevelNode nextLevelAtPosition:CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))];
self.nextLevelDisplayed = YES;
}
}
어떤 도움이 많이 주시면 감사하겠습니다을 시작합니다.
[문서] (https://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIResponder_Class/index.html#//apple_ref/ occ/instm/UIResponder/touchesBegan : withEvent :)'super (공통 사용 패턴)를 호출하지 않고이 메소드를 대체하는 경우, 스텁 (비어있는) 구현으로서 만 터치 이벤트를 처리하는 다른 메소드도 대체해야합니다. ' – Mateusz
@Mateusz에게 답장을 보내 주셔서 감사합니다. 그 뜻을 조금 더 넓힐 수 있습니까? 나는 꽤 이해하지 못한다. 다음 레벨보기가 표시 될 때 충돌이 발생하며 이는 수퍼를 호출하는 것을 포함합니다. –
죄송합니다. 명확하지 않았습니다. 내 제안에 따라 문제가 해결되지 않을 수도 있습니다. 다른 터치 이벤트를 사용하면 작동하지 않을 수도 있습니다. – Mateusz