我正在尝试做一个简单的任务。我从屏幕的左上角开始有一个圆圈。当我触摸屏幕上的任何地方时,我希望圆圈慢慢移向并停在用户触摸的位置。我已经成功实现了这一点,但是圈子移动的速度太快了。我相信我需要尝试让我的run()线程休眠几毫秒,但我似乎无法成功地做到这一点。这会是什么解决方案?代码很简单,但我发布在下面以防万一,谢谢你的帮助!
Thread t = null;
SurfaceHolder holder;
boolean isItOK = false;
public GameView(Context context)
{
super(context);
// TODO Auto-generated constructor stub
holder = getHolder();
}
public void run()
{
Display display = getWindowManager().getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
int screenArrayWidth = screenWidth / 50;
int screenArrayHeight = screenHeight / 30;
int[][] mapArray = new int[50][30];
while (isItOK)
{
if (!holder.getSurface().isValid())
{
continue;
}
c = holder.lockCanvas();
c.drawARGB(255, 255, 0, 0);
c.drawBitmap(ball, destinationX - (ball.getWidth() / 2),
destinationY - (ball.getHeight() / 2), null);
}
}
public boolean onTouch(View v, MotionEvent me)
{
switch (me.getAction())
{
case MotionEvent.ACTION_DOWN:
{
while (((int)(me.getX()) != (int)(destinationX)) && ((int)(me.getY()) != (int)(destinationY)))
{
if (me.getX() > destinationX)
{
destinationX++;
}
if (me.getX() < destinationX)
{
destinationX--;
}
if (me.getY() > destinationY)
{
destinationY++;
}
if (me.getY() < destinationY)
{
destinationY--;
}
}
}
答案 0 :(得分:0)
好的,您遇到的问题是您没有考虑经过的时间。这也意味着动画将在不同设备上以不同的速度移动,并且在后台运行不同的事物。你需要做的是决定你希望圆圈移动每毫秒的像素数,然后按照从最后一帧开始经过的时间来修改移动距离。