PanGesture in Sprite Kit
Create sword like sign on display.
Drag and drop is recognized using UIPanGestureRecognizer
Sample
PanGestureScene.h
#import <SpriteKit/SpriteKit.h> @interface PanGestureScene : SKScene @end
PanGestureScene.m
#import "PanGestureScene.h"
#import "LineNode.h"
@interface PanGestureScene()
@property (nonatomic)CGPoint start;
@property (nonatomic)CGPoint end;
@end
@implementation PanGestureScene
- (id)initWithSize:(CGSize)size {
if (self = [super initWithSize:size]) {
}
return self;
}
- (void)didMoveToView:(SKView *)view {
UIPanGestureRecognizer *gestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];
[[self view] addGestureRecognizer:gestureRecognizer];
}
- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateBegan) {
self.start = [recognizer locationInView:recognizer.view];
self.start = [self convertPointFromView:self.start];
// Remove
[[self childNodeWithName:@"samurai"] removeFromParent];
}
else if (recognizer.state == UIGestureRecognizerStateChanged) {
//NSLog(@"Change");
}
else if (recognizer.state == UIGestureRecognizerStateEnded) {
self.end = [recognizer locationInView:recognizer.view];
self.end = [self convertPointFromView:self.end];
NSLog(@"start (%f, %f), end(%f, %f)", self.start.x, self.start.y, self.end.x, self.end.y);
LineNode *node = [LineNode createLineNode:self.start end:self.end strokeColor:[UIColor cyanColor] lineWidth:3.0];
node.name = @"samurai";
[self addChild:node];
}
}
@end

