我正在使用kobold2d的KKInput使用平移手势识别器进行拖放操作。当iphone在桌面上是平的时它可以很好地工作,但是如果我向我倾斜手机,翻译似乎完全错误并且不再正常运行,事实上它似乎认为我的IPhone是颠倒的。
我做错了吗?
示例代码:
if([input gesturePanBegan])
{
for( CCSprite* item in self.View.children )
{
bool result = [input isAnyTouchOnNode:item touchPhase: KKTouchPhaseAny];
if (result)
{
itemPanning = item;
originalPostion = item.position;
}
}
CCLOG(@"%f y translation %f x translation", input.gesturePanTranslation.y , input.gesturePanTranslation.x);
if(itemPanning != NULL)
{
[itemPanning setPosition:ccp(input.gesturePanTranslation.x + originalPostion.x, originalPostion.y)];
if(input.gesturePanTranslation.x > 70)
{
[View Select: [itemPanning tag]];
SelectAttackCommand * command = [SelectAttackCommand new];
command.SelectedAttack = [itemPanning tag];
itemPanning = NULL;
NOTIFY(command);
}
}
}
else if(![input gesturePanBegan] && itemPanning != NULL)
{
itemPanning = NULL;
[View Open];
}
答案 0 :(得分:1)
这是一个答案,但也许不是最好的答案。在KKInputGesture中,在handlePanGesture下,翻译的值计算如下:
gesturePanTranslation = [panRecognizer translationInView:glView]; gesturePanTranslation = [self convertRelativePointToGL:gesturePanTranslation];
此处的第二个调用会根据设备的方向转换值。这可能适用于某些情况,但在我的情况下它不需要所以我评论它,现在我的翻译值总是正确的,无论我如何倾斜iPhone。
我可能在这里遗漏了一些东西,所以我不想将此标记为答案。