でtouchesBegan
、私はシングルタッチのための私のロジックを持っています。そして、パンでカメラの位置を変更する機能を追加しようとしています。パンには使用しますtouchesMoved
。すべてが大丈夫ですが、パンすると、タッチのアクションも実行されます。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
NSArray *sprites = [self nodesAtPoint:location];
for (SKSpriteNode *sprite in sprites)
{
//*
//* How to stop executing this block when panning?
//*
}
}
}
-(void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint positionInScene = [touch locationInNode:self];
CGPoint previousPosition = [touch previousLocationInNode:self];
CGPoint translation = CGPointMake((-1)*(positionInScene.x - previousPosition.x), (-1)*(positionInScene.y - previousPosition.y));
CGPoint cameraPos = [self camera].position;
[self camera].position = CGPointAdd(cameraPos, translation);
}
IOSに組み込まれているパンジェスチャの使用方法を見てください。タッチイベントも実行できるようにするかどうかを選択する必要があります。
ビューコントローラを使用して回答しますが、他の場所で使用することもできます。
Objective C:
ViewController.hを開き、次の宣言を追加します。
@interface ViewController : UIViewController<UIGestureRecognizerDelegate>
..。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer;
次に、次のようにViewController.mに実装します。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more
この時点で、上記のチュートリアルのようにUIを介してリンクするか、最初のどこかで宣言することができます
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[self.view addGestureRecognizer:pan];
迅速:
class ViewController : UIViewController, UIGestureRecognizerDelegate
...そしてあなたのコードで
@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
let translation = recognizer.translationInView(self.view)
if let view = recognizer.view {
view.center = CGPoint(x:view.center.x + translation.x,
y:view.center.y + translation.y)
}
recognizer.setTranslation(CGPointZero, inView: self.view)
}
http://www.raywenderlich.com/76020/using-uigesturerecognizer-with-swift-tutorial
この時点で、上記のチュートリアルのようにUIを介してリンクするか、initのように初期段階のどこかで宣言することができます。
let pan = UIPanGestureRecognizer(target: self, action: "handlePan:")
self.view.addGestureRecognizer(pan);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加