2012-12-22 4 views
1

kobold2d의 KKInput을 사용하여 팬 제스처 인식기를 사용하여 드래그 앤 드롭을 수행합니다. 아이폰이 테이블에서 평평 해지면 완벽하게 작동하지만, 나를 향해 전화를 기울이면 번역이 완전히 틀린 것처럼 보이고 정상적으로 더 이상 정상적으로 동작하지 않습니다. 사실 내 아이폰은 거꾸로 생각합니다.KKInput panning 아이폰이 기울어 졌을 때 잘못된 값을 전달합니다.

내가 잘못 했나요?

샘플 코드 :

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]; 
    } 

답변

1

이없는 최고의 하나 대답이지만, 어쩌면. KKInputGesture에서 handlePanGesture 아래의 값은 다음과 같이 계산됩니다.

gesturePanTranslation = [panRecognizer translationInView : glView]; gesturePanTranslation = [self convertRelativePointToGL : gesturePanTranslation];

여기서 두 번째 호출은 장치의 방향에 따라 값을 변환합니다. 일부 시나리오에서는 괜찮을 지 모르지만, 제 경우에는 필요하지 않아서 주석 처리 했으므로 이제는 IPhone을 기울이는 방법에 상관없이 항상 번역 값이 정확합니다.

내가 여기에 뭔가를 놓칠 수 있습니다, 그래서 나는 대답으로 이것을 아직 표시하고 싶지 않습니다.

+0

나는 gesturePanTranslation을 주석 처리했습니다. - = [self convertRelativePointToGL : gesturePanTranslation]; - 아직도 내 문제를 해결하지 못해 ... 응? – Clev3r

+0

전화를 기울이면 팬이 여전히 손상됩니까? – AwDogsGo2Heaven

+0

예. 나는 그것이 내가 냄비에 따라 나의 물건을 어떻게 바꾸는 지에 관한 문제일지도 모른다라고 생각한다. 도움을 받으려면 http://stackoverflow.com/questions/14668685/improper-iphone-orientation/14670540#14670540을 참조하십시오. – Clev3r