这一定是一个相当简单的解决方案,我只是遗漏了。如何使用KKInput实现简单的拖放操作?
我在更新方法中尝试这样的事情。
KKInput* input = [KKInput sharedInput];
if ([input touchesAvailable]){
if ([input isAnyTouchOnNode:[self getChildByTag:0] touchPhase:KKTouchPhaseAny]) {
[sprite setPosition:[input locationOfAnyTouchInPhase:KKTouchPhaseAny]];
}
}
它运作正常,但有两个问题。 1.你可以通过快速移动来逃避阻力2.如果你用下面的标签拖过精灵,它会抓住那个。
我错过了什么?
答案 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];
}