Я нахожусь в процессе создания игры.У меня все настроено для движений.У меня есть два отдельных вида для левого и правого направления.Для того, чтобы двигаться влево и вправо, вы должны нажать на один подъем и нажать на другой, что нормально.Я также хочу дать пользователю возможность скользить от одного к другому и получать те же результаты.В процессе 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; }});
}