我正在制作游戏。我为运动做好了一切准备。我有两个单独的视图,分别用于左方向和右方向。为了向左和向右移动,您必须向下按一个提起开关,然后再向下压另一个选择。我还希望使用户能够从一个滑到另一个并获得相同的结果。在ACTION_DOWN过程中,滑动到其他视图并触发ACTION_DOWN。可以使用ACTION_MOVE吗?
private void initializeLogic() {
walk = 0;
timer = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
int bw = board.getMeasuredWidth()/2;
width = bw;
}
});
}
};
_timer.schedule(timer, (int)(1000));
left.setOnTouchListener(new View.OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
return true;
case MotionEvent.ACTION_DOWN:
leftTimer = new TimerTask() {
@Override public void run() {
runOnUiThread(new Runnable() {
@Override public void run() {
android.setTranslationX((float)(android.getTranslationX() - SketchwareUtil.getDip(getApplicationContext(), (int)(2))));
android.requestFocus();
direction = 1;
if (switch_img == 0) {
_updateFrameLeft(walk % 20);
walk++;
}
}});}};
_timer.scheduleAtFixedRate(leftTimer, (int)(0), (int)(25));
return true;
case MotionEvent.ACTION_UP:
walk = 0;
if (switch_img == 0) {
android.setImageResource(R.drawable.androidstand_left);
}
leftTimer.cancel();
return true;
} return false; }});
right.setOnTouchListener(new View.OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
return true;
case MotionEvent.ACTION_DOWN:
rightTimer = new TimerTask() {
@Override public void run() {
runOnUiThread(new Runnable() {
@Override public void run() {
android.setTranslationX((float)(android.getTranslationX() + SketchwareUtil.getDip(getApplicationContext(), (int)(2))));
android.requestFocus();
direction = 0;
if (switch_img == 0) {
_updateFrame(walk % 20);
walk++;
}
}});}};
_timer.scheduleAtFixedRate(rightTimer, (int)(0), (int)(25));
return true;
case MotionEvent.ACTION_UP:
walk = 0;
if (switch_img == 0) {
android.setImageResource(R.drawable.androidstand);
}
rightTimer.cancel();
return true;
} return false; }});
}