スプライトキットでタッチアクションを実行せずにパンするにはどうすればよいですか?

HelloimDarius

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);

}
Knight0fDragon

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]

編集
0

コメントを追加

0

関連記事

分類Dev

インターネットアクセスを許可せずにWindowsプログラムを実行するにはどうすればよいですか?

分類Dev

Mavenインストールの実行時にライセンスチェックをスキップするにはどうすればよいですか?

分類Dev

JSPファイルでスクリプトレットを使用せずにアプリケーションコンテキストパスにアクセスするにはどうすればよいですか?

分類Dev

クラスタで実行されるアプリケーションでマルチトピックを使用するときに、マルチトピックのパーティションを均等に割り当てるにはどうすればよいですか?

分類Dev

リダイレクトが行われた後にアクション(Redux)をディスパッチするにはどうすればよいですか?

分類Dev

Windowsをインストールせずに.Netアプリケーションを実行するにはどうすればよいですか?

分類Dev

<iframe>タグを使用せずにチャットアプリケーションをiframeにロードするにはどうすればよいですか?

分類Dev

更新せずにjspスクリプトレットを実行する検索ボタンを作成するにはどうすればよいですか?

分類Dev

Tomcatのセッションタイムアウトをリセットせずに認証済みAJAXリクエストを実行するにはどうすればよいですか?

分類Dev

プロットを個別にコンピュータに保存せずに、テキストファイルからプロットのアニメーション(mpegムービーなど)を作成するにはどうすればよいですか?

分類Dev

`fc-cache -f`を実行せずに、手動でインストールしたフォントをすべてのアプリケーションからアクセスできるようにするにはどうすればよいですか?

分類Dev

Excelデスクトップアプリケーションのチャットアイコンを表示するにはどうすればよいですか?

分類Dev

スキップされたブランク(スキップせずに元のトークン)を取得するにはどうすればよいですか?

分類Dev

ラップを解除せずにオプションの型でクロージャを実行するにはどうすればよいですか?

分類Dev

関数全体を処理せずにコンストラクターから例外をキャッチするにはどうすればよいですか?

分類Dev

シェイクアクションをスキップするにはどうすればよいですか?

分類Dev

できれば64ビットのWindows8 UEFI Acer Aspire E1-571ラップトップに新しいパーティションを作成せずに、Ubuntu 13.04をインストールするにはどうすればよいですか?

分類Dev

できれば64ビットのWindows8 UEFI Acer Aspire E1-571ラップトップに新しいパーティションを作成せずに、Ubuntu 13.04をインストールするにはどうすればよいですか?

分類Dev

タブをクリック/スワイプできないようにして、コンテキストアクションバーでスライドタブを無効にするにはどうすればよいですか?

分類Dev

mysqlコネクタをインストールせずにmysqlアプリを実行するにはどうすればよいですか?

分類Dev

i3でGnomeスタートアップアプリケーションを実行するにはどうすればよいですか?

分類Dev

WPFアプリケーションで非同期スタートアップを実行するにはどうすればよいですか?

分類Dev

i3でGnomeスタートアップアプリケーションを実行するにはどうすればよいですか?

分類Dev

Javascriptでボタンをクリックせずにアクションをトリガーするにはどうすればよいですか?

分類Dev

セル値が存在する場合はそれをチェックしてシートAでアクションを実行し、それをキーとして使用して、すでに処理されているため、次の実行でスキップするにはどうすればよいですか?

分類Dev

NUnitテストセッションの開始時にコードを実行するにはどうすればよいですか(フィクスチャのセットアップではありません)

分類Dev

エキスポでイントロアニメーションの「スプラッシュ」を使用するにはどうすればよいですか

分類Dev

印刷ダイアログをトリガーせずにSSRSURLアクションを実行するにはどうすればよいですか?

分類Dev

アプレットや外部アプリを使用せずに、ブラウザー内のWebアプリクライアント証明書ベースの認証を実行するにはどうすればよいですか?

Related 関連記事

  1. 1

    インターネットアクセスを許可せずにWindowsプログラムを実行するにはどうすればよいですか?

  2. 2

    Mavenインストールの実行時にライセンスチェックをスキップするにはどうすればよいですか?

  3. 3

    JSPファイルでスクリプトレットを使用せずにアプリケーションコンテキストパスにアクセスするにはどうすればよいですか?

  4. 4

    クラスタで実行されるアプリケーションでマルチトピックを使用するときに、マルチトピックのパーティションを均等に割り当てるにはどうすればよいですか?

  5. 5

    リダイレクトが行われた後にアクション(Redux)をディスパッチするにはどうすればよいですか?

  6. 6

    Windowsをインストールせずに.Netアプリケーションを実行するにはどうすればよいですか?

  7. 7

    <iframe>タグを使用せずにチャットアプリケーションをiframeにロードするにはどうすればよいですか?

  8. 8

    更新せずにjspスクリプトレットを実行する検索ボタンを作成するにはどうすればよいですか?

  9. 9

    Tomcatのセッションタイムアウトをリセットせずに認証済みAJAXリクエストを実行するにはどうすればよいですか?

  10. 10

    プロットを個別にコンピュータに保存せずに、テキストファイルからプロットのアニメーション(mpegムービーなど)を作成するにはどうすればよいですか?

  11. 11

    `fc-cache -f`を実行せずに、手動でインストールしたフォントをすべてのアプリケーションからアクセスできるようにするにはどうすればよいですか?

  12. 12

    Excelデスクトップアプリケーションのチャットアイコンを表示するにはどうすればよいですか?

  13. 13

    スキップされたブランク(スキップせずに元のトークン)を取得するにはどうすればよいですか?

  14. 14

    ラップを解除せずにオプションの型でクロージャを実行するにはどうすればよいですか?

  15. 15

    関数全体を処理せずにコンストラクターから例外をキャッチするにはどうすればよいですか?

  16. 16

    シェイクアクションをスキップするにはどうすればよいですか?

  17. 17

    できれば64ビットのWindows8 UEFI Acer Aspire E1-571ラップトップに新しいパーティションを作成せずに、Ubuntu 13.04をインストールするにはどうすればよいですか?

  18. 18

    できれば64ビットのWindows8 UEFI Acer Aspire E1-571ラップトップに新しいパーティションを作成せずに、Ubuntu 13.04をインストールするにはどうすればよいですか?

  19. 19

    タブをクリック/スワイプできないようにして、コンテキストアクションバーでスライドタブを無効にするにはどうすればよいですか?

  20. 20

    mysqlコネクタをインストールせずにmysqlアプリを実行するにはどうすればよいですか?

  21. 21

    i3でGnomeスタートアップアプリケーションを実行するにはどうすればよいですか?

  22. 22

    WPFアプリケーションで非同期スタートアップを実行するにはどうすればよいですか?

  23. 23

    i3でGnomeスタートアップアプリケーションを実行するにはどうすればよいですか?

  24. 24

    Javascriptでボタンをクリックせずにアクションをトリガーするにはどうすればよいですか?

  25. 25

    セル値が存在する場合はそれをチェックしてシートAでアクションを実行し、それをキーとして使用して、すでに処理されているため、次の実行でスキップするにはどうすればよいですか?

  26. 26

    NUnitテストセッションの開始時にコードを実行するにはどうすればよいですか(フィクスチャのセットアップではありません)

  27. 27

    エキスポでイントロアニメーションの「スプラッシュ」を使用するにはどうすればよいですか

  28. 28

    印刷ダイアログをトリガーせずにSSRSURLアクションを実行するにはどうすればよいですか?

  29. 29

    アプレットや外部アプリを使用せずに、ブラウザー内のWebアプリクライアント証明書ベースの認証を実行するにはどうすればよいですか?

ホットタグ

アーカイブ