0

我正在开发单声道 android 中的游戏应用程序。我想要从上到下垂直滚动的背景图像的示例代码。我有一个代码,但它不能正常工作。所以请有人帮助我。

    mBGFarMoveY = mBGFarMoveY + 3;
    int newFarY = mBackgroundImageFar.Height + (+ mBGFarMoveY);
    if (newFarY <= 0) 
    {
    mBGFarMoveY = 0;
    canvas.DrawBitmap (mBackgroundImageFar,0,mBGFarMoveY,null);
    } 
    else
    {
    canvas.DrawBitmap (mBackgroundImageFar,0,mBGFarMoveY,null);
    canvas.DrawBitmap (mBackgroundImageFar,0, newFarY, null);
    }

谢谢&问候,Chakradhar。

4

1 回答 1

0

你看到了什么,你期待什么?据我所知,您的代码存在几个问题。

  1. 位置不是根据时间计算的,所以滚动会很跳跃。
  2. 重叠代码看起来不太好,并且很多超出范围。我不确定“画布”是什么,但如果它是来自 android.graphics 的画布,您可以指定源矩形和目标矩形进行 blit 而不仅仅是“y”位置。

所以类似(未经测试,我之前没有为这个平台编写过代码,但你应该明白):

y = (time_seconds * pixels_per_second);
y = y % image.Height; // wrap
src_rect.left = 0;
src_rect.right = image.Width - 1;
src_rect.top = y;
src_rect.bottom = image.Height - 1;

dst_rect.left = 0;
dst_rect.right = image.Width - 1;
dst_rect.top = 0;
dst_rect.bottom = image.Height - 1;

if (y == 0) {
    canvas.DrawBitmap(image, src_rect, dst_rect, null);
}
else {
    dst_rect.bottom = src_rect.height() - 1;
    canvas.DrawBitmap(image, src_rect, dst_rect, null);

    src_rect.top = 0;
    src_rect.bottom = y - 1;
    dst_rect.top = dst_rect.bottom + 1;
    dst_rect.bottom = image.Height - 1;

    canvas.DrawBitmap(image, src_rect, dst_rect, null);
}
于 2012-07-09T08:09:38.447 回答