1

私は 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;
4

1 に答える 1

0
Check out screen width and height based drawing.

画面内に描画する必要があります。

I think u r drawing the characters out of the screen width or height 
于 2012-09-15T12:59:25.557 に答える