2013-06-04 17 views
0

如何在isActionMove()進行單點觸摸,因爲當我在精靈移動手指需要multipal觸摸事件和更新得分兩次三次上isActionMove()進行單點觸摸

mHardware[active] = new Sprite(pX, pY, java, this.getVertexBufferObjectManager()) { 

    @Override 
    public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) { 
     if (pSceneTouchEvent.isActionMove()) { 
      score++; 
     } 
    } 
}; 

我不能使用isActionDown,因爲它的一個像水果忍者遊戲中,我需要跨屏 移動手指,現在的問題是得分有時由2 increasse有時是3,因爲當我在那地方有一個

+0

@Alexey給我一些解決方案阿列克謝如果ü甲肝通過朱利安不能正常工作 – raj

回答

3

子畫面的應用程序通知移動手指幾個短的運動,你應該使用

private static boolean isFirstMove; 
public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) { 
    if (pSceneTouchEvent.isActionDown()) { 
     isFirstMove = true; 
    } 
    if (pSceneTouchEvent.isActionMove()) { 
     if(isFirstMove) { 
      score++; 
      isFirstMove = false; 
     } 
    } 
    if (pSceneTouchEvent.isActionUp()) { 
     isFirstMove = false; 
    } 
}); 
+0

日Thnx其工作給出解決方案...但沒有THT多少有效的手段有時失敗請告訴我,如果有任何其他解決方案 – raj

+2

我做了一個與AndEngine的「macbouf」遊戲,但它是非常古老的。但我已經使用這個解決方案。我還記得AndEngine經常檢測到兩次點擊,而不是一次。 如果這是你的問題,我可以是另一種解決方案。 –

+0

thanx julien dumortier它的工作現在罰款sory這是我的錯誤你的代碼是完美的 – raj

0

如果你發現上面的一些答案對你正確,那麼我在這裏有一些建議。 您必須爲您的遊戲場景實施場景和區域觸控事件。

SceneTouch事件方法包含兩個事件isActionDown()和isActionUp(),如下面的代碼所示。

public void onSceneTouchEvent(...){ 
    if(pSceneTouchEvent.isActionDown()){ 
     isFirstTouch=true; 
     return true; 
    } else if(pSceneTouchEvent.isActionUp()){ 
     isFirstTouch=false; 
     return true; 
    } 
    return false; 
} 

Area Touch方法只包含單個事件isActionMove(),如下面的代碼所示。

public void onAreaTouch(...){ 
    if(pSceneTouchEvent.isActionMove()){ 
     if(isFirstMove) { 
      score++; 
      isFirstMove = false; 
     } 
     return true; 
    } 
    return false; 
} 

你必須按照上面的策略,因爲一些時間願望事件不會發生你的精靈,所以你沒有得到你的願望結果。由於連dumortier給出

0

溶液可以正常使用

static boolean isFirstMove=true; 

public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float X, float Y) { 

if (pSceneTouchEvent.isActionMove()) { 
    if(isFirstMove) { 
     score++; 
     isFirstMove = false; 
    } 
} 

});