2013-10-26 134 views
0

我正在開發與Andengine.I使用HUD遊戲控制器按鈕的遊戲。但我有一個錯誤在它的錯誤是:當我按下按鈕並移動我的手指之外的buttun沒有isActionUp ,總是按下按鈕。我可以如何解決這個問題? 我試過.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_UPACTION_OUTSIDE,取決於用戶做什麼。我建議您調試所有的TouchEvent,即在onTouchEvent方法中添加Log呼叫線路,並查看手指離開按鈕時得到的事件。

我建議的另一個選擇是檢查本地觸摸座標(pTouchAreaLocalX,pTouchAreaLocalY)。當手指離開按鈕時,可能會最後得到一個TouchEvent,所以將座標與按鈕的大小進行比較(由於按鈕是75x75,如果其中任一座標爲< 0或> 75,則不在按鈕之內。)

+0

它仍然沒有工作。我認爲這個問題是關於HUD的。因爲當我使用Sprite及其isActionDown時,它正在工作,但是當我將此Sprite附加到HUD時,它不起作用。工作,但有我上面說的錯誤! – immyth

+0

您的平視顯示器本身是否設置爲觸控區域? – 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您interestings ..