После некоторого рассмотрения я решил реализовать это решение. Я думаю, что это работает довольно хорошо.
Я все еще не уверен, почему мой предыдущий путь не сработал. Если кто-то еще хотел бы уточнить, я был бы признателен.
GameCanvas. Я создал эту тему.
resetSlap = new Thread()
{
public void run()
{
while(true)
{
try
{
Thread.sleep(500);
GameWindow.post(new Runnable()
{
public void run()
{
GameWindow.setImageBitmap(images[0]);
GameWindow.postInvalidate();
}
});
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
};
Baiscally, каждые полсекунды я хочу вернуть изображение в нормальное состояние
Тогда в OnFling я написал
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY)
{
if(GameWindow.getContext() == null)
return false;
if((e1.getY() >= GameWindow.getHeight()) && (e1.getY() <= GameWindow.getBottom()))
{
try
{
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left slap
if((e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE) &&
(Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY))
{
slappingLeft = true;
//Animate Slap
SlapLeft();
SlapSound();
if(voice.nextInt(10) < 3)
{
Voice.start();
}
}
// left to right slap
else if ((e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE) &&
(Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY))
{
slappingRight = true;
//Animate Slap
SlapImage();
SlapSound();
if(voice.nextInt(10) < 3)
{
Voice.start();
}
}
}
catch (Exception e)
{
//nothing
}
}
slappingLeft = slappingRight = false;
return true;
}
По сути, если бы я шлепнул влево, я бы вызвал Slap влево и дождался бы сброса потока, а если бы я ударил вправо, я бы вызвал Slap Right и подождал, пока нить сбросится.
Этот ответ хорошо подходит для моей ситуации .. Надеюсь, это поможет: D
Спасибо всем за помощь.