0

私はモノアンドロイドでゲームアプリケーションに取り組んでいます。背景画像を上から下に縦スクロールするサンプルコードが欲しいです。私はコードを持っていますが、正しく動作していません.誰かが私を助けてください.

    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);
    }

ありがとうございます、チャクラダール。

4

1 に答える 1

0

あなたは何を見て、何を期待しますか?私が見る限り、あなたのコードにはいくつかの問題があります。

  1. 位置は時間に基づいて計算されないため、スクロールが不安定になります。
  2. オーバーラップ コードは見栄えがよくなく、多くの領域を超えています。「キャンバス」が何であるかはわかりませんが、それが android.graphics のものである場合は、「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 に答える