多次滑动触发 Sprite 中的场景转换
Multiple Swipes to trigger Scene Transition in Sprite
正如我现在设置的那样,只需一次滑动即可使用,但如果我添加更多,它不会执行任何操作。如果可能的话,我希望用户必须向左、向右和向上滑动以触发此场景转换。
GameStart.H
@property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGesture;
@property (nonatomic, strong) UISwipeGestureRecognizer *rightSwipeGesture;
@property (nonatomic, strong) UISwipeGestureRecognizer *upSwipeGesture;
@property (nonatomic, strong) UISwipeGestureRecognizer *downSwipeGesture;
@property(nonatomic) BOOL cancelsTouchesInView;
GameStart.m
- (void)didMoveToView:(SKView *)view{
_cancelsTouchesInView = NO;
self.leftSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.rightSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.upSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.downSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.leftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
self.rightSwipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
self.upSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp;
self.downSwipeGesture.direction = UISwipeGestureRecognizerDirectionDown;
[self.view addGestureRecognizer:self.leftSwipeGesture];
[self.view addGestureRecognizer:self.rightSwipeGesture];
[self.view addGestureRecognizer:self.upSwipeGesture];
[self.view addGestureRecognizer:self.downSwipeGesture];
}
-(void)handlesSwipes:(UISwipeGestureRecognizer *) sender{
if (sender.direction == UISwipeGestureRecognizerDirectionLeft && sender.direction == UISwipeGestureRecognizerDirectionRight && sender.direction == UISwipeGestureRecognizerDirectionUp){
SKTransition *fade = [SKTransition crossFadeWithDuration:.5];
MyScene * scene = [MyScene sceneWithSize:self.view.bounds.size];
[self.view presentScene:scene transition:fade];
}
成功了 =) 谢谢!
-(void)handlesSwipes:(UISwipeGestureRecognizer *) sender{
if (sender.direction == UISwipeGestureRecognizerDirectionLeft){
_userSwipeLeft = YES;
}
if (sender.direction == UISwipeGestureRecognizerDirectionRight){
_userSwipeRight = YES;
}
if (sender.direction == UISwipeGestureRecognizerDirectionUp){
_userSwipeUp = YES;
}
if (_userSwipeUp == YES && _userSwipeRight == YES && _userSwipeLeft == YES){
SKTransition *fade = [SKTransition crossFadeWithDuration:.5];
MyScene * scene = [MyScene sceneWithSize:self.view.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[self.view presentScene:scene transition:fade];
}
}
正如我现在设置的那样,只需一次滑动即可使用,但如果我添加更多,它不会执行任何操作。如果可能的话,我希望用户必须向左、向右和向上滑动以触发此场景转换。
GameStart.H
@property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGesture;
@property (nonatomic, strong) UISwipeGestureRecognizer *rightSwipeGesture;
@property (nonatomic, strong) UISwipeGestureRecognizer *upSwipeGesture;
@property (nonatomic, strong) UISwipeGestureRecognizer *downSwipeGesture;
@property(nonatomic) BOOL cancelsTouchesInView;
GameStart.m
- (void)didMoveToView:(SKView *)view{
_cancelsTouchesInView = NO;
self.leftSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.rightSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.upSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.downSwipeGesture = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(handlesSwipes:)];
self.leftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
self.rightSwipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
self.upSwipeGesture.direction = UISwipeGestureRecognizerDirectionUp;
self.downSwipeGesture.direction = UISwipeGestureRecognizerDirectionDown;
[self.view addGestureRecognizer:self.leftSwipeGesture];
[self.view addGestureRecognizer:self.rightSwipeGesture];
[self.view addGestureRecognizer:self.upSwipeGesture];
[self.view addGestureRecognizer:self.downSwipeGesture];
}
-(void)handlesSwipes:(UISwipeGestureRecognizer *) sender{
if (sender.direction == UISwipeGestureRecognizerDirectionLeft && sender.direction == UISwipeGestureRecognizerDirectionRight && sender.direction == UISwipeGestureRecognizerDirectionUp){
SKTransition *fade = [SKTransition crossFadeWithDuration:.5];
MyScene * scene = [MyScene sceneWithSize:self.view.bounds.size];
[self.view presentScene:scene transition:fade];
}
成功了 =) 谢谢!
-(void)handlesSwipes:(UISwipeGestureRecognizer *) sender{
if (sender.direction == UISwipeGestureRecognizerDirectionLeft){
_userSwipeLeft = YES;
}
if (sender.direction == UISwipeGestureRecognizerDirectionRight){
_userSwipeRight = YES;
}
if (sender.direction == UISwipeGestureRecognizerDirectionUp){
_userSwipeUp = YES;
}
if (_userSwipeUp == YES && _userSwipeRight == YES && _userSwipeLeft == YES){
SKTransition *fade = [SKTransition crossFadeWithDuration:.5];
MyScene * scene = [MyScene sceneWithSize:self.view.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
[self.view presentScene:scene transition:fade];
}
}