私は Android 開発の初心者で、キャラクターが画面上のタイル上を移動するゲームを作ろうとしています。各タイルは独自のビットマップであるため、キャラクターが移動した後に再描画します。
何らかの理由で、キャラクタースプライトを描画するたびに、ビュー全体がちらつきます。私が作成した偶数の描画ごとに背景が表示され、奇数の描画ごとに背景が黒く見えるようです。また、キャラクター スプライトは軌跡を残しますが、描画が偶数か奇数かに応じて、その半分しか表示されません。私の推測では、何らかの理由で、キャンバスが描画されているビューまたは何かが 2 つあるということです。
画像をアップロードしたはずですが、できません:(誰かが私が間違っていることの手がかりを持っていますか?どんな種類の助けにも感謝します.
キャラクターを動かす方法は次のとおりです。
// Moves sprite on screen
private void MoveSprite()
{
// Run as long as the sprite's location didn't reach its destination
while (m_gameView.m_playerControl.m_MoveDestination.x != m_gameView.m_playerControl.m_CharSprite.m_SpriteLocationOnMatrix.x ||
m_gameView.m_playerControl.m_MoveDestination.y != m_gameView.m_playerControl.m_CharSprite.m_SpriteLocationOnMatrix.y)
{
// Draw sprite with FPS control
Canvas c = null;
startTime = System.currentTimeMillis();
try
{
c = m_gameView.getHolder().lockCanvas();
synchronized (m_gameView.getHolder())
{
// Draws player and refreshes the tiles it was previously on
m_gameView.m_playerControl.onDraw(c);
}
}
finally
{
if (c != null)
{
m_gameView.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
try
{
if (sleepTime > 0)
Thread.sleep(sleepTime);
else
Thread.sleep(10);
}
catch (Exception e)
{
}
}
// After drawing char movement, changing flag to false
m_fIsCharMoved = false;