Я изо всех сил пытаюсь заставить это работать. У меня есть класс SKSpriteNode с именем playerNode, который я хочу переместить жестами смахивания. Я пытаюсь вызвать метод дескриптора смахивания из контроллера представления, но не получаю ответа.
ViewController.h
#import <UIKit/UIKit.h>
#import <SpriteKit/SpriteKit.h>
@interface ViewController : UIViewController
@property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGestureRecognizer;
@property (nonatomic, strong) UISwipeGestureRecognizer *rightSwipeGestureRecognizer;
@end
ViewController.m
#import "ViewController.h"
#import "MyScene.h"
#import "playerNode.h"
@implementation ViewController{
playerNode *player;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Configure the view.
SKView * skView = (SKView *)self.view;
skView.showsFPS = YES;
skView.showsNodeCount = YES;
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
// Present the scene.
[skView presentScene:scene];
// swipe gestures
self.leftSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:player action:@selector(handleSwipes:)];
self.rightSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:player action:@selector(handleSwipes:)];
self.leftSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
self.rightSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:self.leftSwipeGestureRecognizer];
[self.view addGestureRecognizer:self.rightSwipeGestureRecognizer];
}
PlayerNode.h
#import <SpriteKit/SpriteKit.h>
@interface playerNode : SKSpriteNode
-(void)handleSwipes:(UISwipeGestureRecognizer *)sender;
@end
PlayerNode.m
#import "playerNode.h"
@implementation playerNode
-(void)handleSwipes:(UISwipeGestureRecognizer *)sender
{
NSLog(@"swipe");
if (sender.direction == UISwipeGestureRecognizerDirectionLeft)
{
NSLog(@"left");
}
if (sender.direction == UISwipeGestureRecognizerDirectionRight)
{
NSLog(@"rigth");
}
}
@end
Я ценю любую помощь, спасибо
2 ответа
Добавьте жесты смахивания в SKScene.
- (void)didMoveToView: (SKView *)
{
self.leftSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] init];
[self.leftSwipeGestureRecognizer addTarget:self action:@selector(handleSwipes:)];
[self.leftSwipeGestureRecognizer setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer: self.leftSwipeGestureRecognizer];
}
DidMoveToView - это более-менее viewDidLoad в SpriteKit
Затем обработайте свайпы в подклассе SKScene.
В файле .h сделайте плеер видимым для всех.
@property (strong) playerNode *player;
В файле .m установите игрока как цель ..
self.leftSwipeGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self.player action:@selector(handleSwipes:)];
Примечание. Перед добавлением цели playerNode
уже должен быть создан.
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.