坚持视图滚动跟随精灵

时间:2011-12-07 15:38:22

标签: java android canvas scroll sprite

我对编程非常陌生,目前我正在尝试为Android制作一个简单的游戏。我遇到的问题是视图滚动的方式。根据我的逻辑,我相信精灵应该保持在屏幕的中心,但它并没有。该视图确实遵循精灵,但如果有意义则不会以相同的速度。就像在视图中落后一样。它没有跳跃,所以我知道它没有慢慢运转。令我惊讶的是,我将滚动矩形设置为等于玩家x位置 - 显示宽度,然后是y轴相同。因此,我希望你们可以帮助我的是弄清楚为什么精灵不会留在视图的中心。任何帮助将不胜感激。

感谢。

private static Rect displayRect = null; //rect we display to
private Rect scrollRect = null; //rect we scroll over our bitmap with

Display display = getWindowManager().getDefaultDisplay();
displayWidth = display.getWidth();             
displayHeight = display.getHeight();   

displayRect = new Rect(0, 0, displayWidth, displayHeight);
scrollRect = new Rect(0, 0, displayWidth, displayHeight);

//设置滚动矩形的新左上角

    newScrollRectX = ((int)player.getXLocation() - (displayWidth/2));
    newScrollRectY = ((int)player.getYLocation() - (displayHeight/2));

//这是我的onDraw方法,所以它在播放器播放之前更新

    scrollRect.set(newScrollRectX, newScrollRectY,
    newScrollRectX + displayWidth, newScrollRectY + displayHeight);

// bmLargeImage是1440X1440背景

    canvas.drawBitmap(bmLargeImage, scrollRect, displayRect, paint);

canvas.drawBitmap(player.getBitmap(),(float)player.getX(player.getSpeedX()),     (float)player.getY(player.getSpeedY()), null);

1 个答案:

答案 0 :(得分:0)

我的第一个猜测是你正在使用整数计算,而应该使用浮点计算。

int test = 10 / 3; // == 3
float test2 = 10 / 3.0; // == 3.33333...

这可以解释'跳跃'。


请注意,我不确定所有Android手机是否都有FPUs。您可能必须使用fixed point calculations来保证正常的性能。