如何使用KKInput在Kobold2d中实现拖动?

时间:2013-03-17 19:03:56

标签: cocos2d-iphone kobold2d

这一定是一个相当简单的解决方案,我只是遗漏了。如何使用KKInput实现简单的拖放操作?

我在更新方法中尝试这样的事情。

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

它运作正常,但有两个问题。 1.你可以通过快速移动来逃避阻力2.如果你用下面的标签拖过精灵,它会抓住那个。

我错过了什么?

1 个答案:

答案 0 :(得分: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];
}