1

CCSprite サブクラスがあり、最初はそれを

だから私は次のコードを持っていました:

    -(void)onEnter {
        [super onEnter];

       [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
    }

    -(void)onExit {
        [super onExit];

        [[[CCDirector sharedDirector] touchDispatcher] removeDelegate:self];
    }

    -(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
        if ([self containsTouch:touch]) {
            // do stuff
            return YES;
        }
        return NO;
    }

しかし、スプライトが下にドラッグされたかどうかを検出したいので、実際には touchBegan を使用したくないことに気付きました。

ただし、これらのメソッドを実装すると、呼び出されません...

スプライトのタッチがいつ終了したか、それが「スワイプ」されたかどうかを知るにはどうすればよいですか?

4

3 に答える 3

1
  1. 複数のタッチを有効にする: applicationDidFinishLaunching:applicationappdelegate のメソッドで、複数のタッチを YES に設定[glView setMultipleTouchEnabled:YES]; します。次に、CCLayer サブクラス (タッチを検出するために作業しているクラス) の init メソッドに、self.isTouchEnabled = YES; マルチ タッチ メソッドが呼び出されるように追加します。

  2. スワイプ: cocos2d はそのままではジェスチャーをサポートしていません。あなたはおそらく自分で働かなければならないでしょう。ジェスチャに関する Appleイベント処理ガイド から始めることができます。raywenderlich.com の Cocos2D でスプライトをドラッグ アンド ドロップする方法のチュートリアルが役に立ちました。

于 2012-11-06T11:47:49.480 に答える
0

CCTouchableSprite - Objective-C ブロックを使用した CCSprite のタッチ可能なサブクラス。touchMoved を使用して必要なものを検出できます。

于 2012-11-10T22:47:28.077 に答える
0

ディスパッチャーがメソッド (移動、終了、キャンセル) を呼び出すには、最初にタッチを要求する必要があります。イベントを処理します。これは、YES を返すと、ccTouchBegan で行われます。その後、他のイベントを受け取ります。

于 2012-11-06T14:08:26.960 に答える