0

これは、私が見逃しているかなり単純な解決策でなければなりません。KKInput を使用して単純なドラッグ アンド ドロップを実装するにはどうすればよいですか?

updateメソッドでこのようなことを試みています。

KKInput* input = [KKInput sharedInput];
if ([input touchesAvailable]){
    if ([input isAnyTouchOnNode:[self getChildByTag:0] touchPhase:KKTouchPhaseAny]) {
        [sprite setPosition:[input locationOfAnyTouchInPhase:KKTouchPhaseAny]];
    }
}

問題なく動作しますが、問題が 2 つあります。1. 非常に速く移動することでドラッグを回避できます。 2. 下にタグが付いたスプライトをドラッグすると、そのスプライトをつかみます。

私は何が欠けていますか?

4

1 に答える 1

0

LearnCocos2D の助けを借りて、私がしたことは次のとおりです。

まず、isDragging という BOOL を作成し、init で no に設定しました。また、どのスプライトがタッチされているかを追跡するためのプロパティも作成しました。

if ([input touchesAvailable] && isDragging == NO){
    if ([input isAnyTouchOnNode:[self getChildByTag:0] touchPhase:KKTouchPhaseAny]) {
        draggedSprite = zero; // Grab this pointer for use next
        isDragging = YES; 
    }
}

次に、ドラッグを NO に設定すると、タッチが利用できなくなります。

if (![input touchesAvailable]) {
    isDragging = NO;
}

次に、ドラッグされている現在のスプライトをタッチ位置に更新するだけです。

if (isDragging){
    draggedSprite.position = [input locationOfAnyTouchInPhase:KKTouchPhaseAny];
}
于 2013-03-18T00:47:17.167 に答える