こんにちは私はAndroidアプリでAndEngineを使用しています。オブジェクト(この場合はAnalogOnScreenControlsのオブジェクト)がタッチされた状態からタッチされていない状態に移行したことを検出するメソッドがあるかどうか疑問に思っていますか?誰かが「アナログスティック」エンティティを手放したときにのみ実行される特定のコマンドを設定したいと思います。コントロールはまた、float値を使用して現在の位置を検出します。これは、コントロールがアイドル状態のときに変数がゼロに設定されるため、値がゼロ以外の値になるときの方法にもなります。事前に助けてくれてありがとう!
2 に答える
3
TouchEvent には、確認できるフラグがあります。ほとんどの場合、私は次のようなことをします:
@Override
public boolean onAreaTouched(final TouchEvent touchEvent, ITouchArea touchArea, float touchAreaLocalX, float touchAreaLocalY) {
switch(touchEvent.getAction()){
case TouchEvent.ACTION_MOVE:{
// do stuff when finger moves
return true; // don't forget to break, or return true directly if the event was handled
}
case TouchEvent.ACTION_DOWN:{
// do stuff, the first time the finger touches the display
return true;
}
case TouchEvent.ACTION_UP:{
// do stuff when the finger goes up again and ends the touch event (your case)
return true;
}
case TouchEvent.ACTION_CANCEL:{
// If the event is somehow canceled - e.g. the finger leaves the display
return true;
}
default:{
// none of the above
return false;
}
}
}
そんな感じ。これらの単純なアクションよりもイベントに関する詳細情報が必要な場合は、MotionEvent を取得して、touchEvent.getMotionEvent()
そこにある追加のオプションを確認してください。ところで:return true
ここではブレークではなくステートメントを直接使用することを好みます。これは、タッチ イベントがアプリで他の方法で使用されないようにするためです。しかし、もちろんそれを変更することはできます。
お役に立てれば
クリストフ
于 2012-08-12T18:25:58.177 に答える
0
isTouched という名前のフィールド (グローバル変数) を作成し、最初に false に設定することができます。次に、 onControlChange() 内で次のようにします。
if(pValueX == 0 && pValueY == 0 && isTouched){ //means knob has recently been touched
isTouched = false; //set to false so that being idle does not come here
//do your thing here
}
else{
isTouched = true;
//do normal stuff here
}
于 2012-08-12T19:15:29.167 に答える