0

这一定是一个相当简单的解决方案,我只是想念它。如何使用 KKInput 实现简单的拖放?

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

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

它工作正常,但有两个问题。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 回答