2013-10-26 1 views
0

Andengine으로 게임을 개발 중입니다. 게임 컨트롤러 버튼에 HUD를 사용했습니다.하지만 버그가 있습니다. 버그는 다음과 같습니다. 버튼을 누르고 isActionUp없이 buttun 외부로 손가락을 움직였을 때 , 버튼은 항상 눌러져 있습니다. 어떻게 해결할 수 있습니까? .isActionOutside() 기능을 시도했지만 작동하지 않습니다!버튼 만지기 오류

내가 사용하는 버튼이 코드 :

ButtonSprite left = new ButtonSprite(75, 75, ResourcesManager.getInstance().leftButtonRegion, vbom) { 
     @Override 
     public boolean onAreaTouched(TouchEvent pTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) { 
      if(pTouchEvent.isActionDown()) { 
       this.setCurrentTileIndex(1); 
       player.moveX(-3); 
      } 
      if(pTouchEvent.isActionOutside() || pTouchEvent.isActionUp()) { 
       this.setCurrentTileIndex(0); 
       player.stopMovingX(); 
      } 
      return super.onAreaTouched(pTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); 
     } 
    }; 
    gameHUD.registerTouchArea(left); 
    gameHUD.attachChild(left); 

답변

0

당신은 사용자가 무엇을하는지에 따라 최소한 하나 하나 ACTION_UP 또는 ACTION_OUTSIDE을 받고해야한다. 모든 TouchEvent을 디버그하시는 것이 좋습니다. 즉, onTouchEvent 방법으로 Log 전화 회선을 추가하고 손가락이 버튼에서 벗어 났을 때 어떤 이벤트가 발생하는지 확인하십시오.

내가 제안 할 수있는 또 다른 옵션은 로컬 터치 좌표 (pTouchAreaLocalX, pTouchAreaLocalY)를 확인하는 것입니다. 아마 손가락이 버튼에서 벗어 났을 때 TouchEvent이 나오면 버튼의 크기와 좌표를 비교하십시오 (좌표가 < 또는 75 인 경우 버튼이 75x75이므로 단추 외부에 있음). 당신의 interestings에 대한

+0

. 나는 문제가 HUD에 관한 것이라고 생각한다. Sprite와 isActionDown을 사용하면 작동하지만,이 스프라이트를 HUD에 첨부하면 작동하지 않습니다. 일하지만 내가 위에서 말한 버그가있다! – immyth

+0

HUD는 접촉 영역으로 설정되어 있습니까? – Jong

+0

무엇을 의미합니까? 그 코드는 무엇입니까? – immyth

0
gameHUD = new HUD(); 

ButtonSprite left = new ButtonSprite(75, 75, ResourcesManager.getInstance().leftButtonRegion, vbom) { 
     @Override 
     public boolean onAreaTouched(TouchEvent pTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY) { 
      if(pTouchEvent.isActionDown()) { 
       this.setCurrentTileIndex(1); 
       player.moveX(-3); 
      } 
      if(pTouchEvent.isActionOutside() || pTouchEvent.isActionUp()) { 
       this.setCurrentTileIndex(0); 
       player.stopMovingX(); 
      } 
      return super.onAreaTouched(pTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); 
     } 
    }; 
gameHUD.registerTouchArea(left); 
gameHUD.attachChild(left); 

camera.setHUD(gameHUD); 
0
gameHUD.setTouchAreaBindingOnActionDownEnabled(true); 

이 줄 worked.Thanks .. 그래도 작동하지