【问题标题】:Canvas seems to draw on 2 different views画布似乎借鉴了 2 种不同的观点
【发布时间】:2012-09-15 12:29:25
【问题描述】:

我是 Android 开发的新手,我正在尝试制作一款游戏,让我的角色在屏幕上的图块上移动。因为每个图块都是它自己的位图,所以我在角色移动后重新绘制它。

现在由于某种原因,每次我绘制角色精灵时,整个视图都会闪烁。 似乎在每次 even 绘制时,我创建的背景都是可见的,而在每次 odd 绘制时,背景都是黑色的。此外,角色精灵会留下痕迹,但只有一半是可见的,这取决于它是偶数还是奇数。我的猜测是,由于某种原因,画布正在绘制两个视图或其他东西。

我会上传图片但我不能:( 有谁知道我做错了什么?非常感谢您的任何帮助。

这是移动角色的方法:

// 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;

【问题讨论】:

  • 当然,但是代码你要更具体地说明要发布代码的哪一部分?

标签: android surfaceview android-canvas


【解决方案1】:
Check out screen width and height based drawing.

你应该在屏幕内绘图。

I think u r drawing the characters out of the screen width or height 

【讨论】:

  • 我在onDraw方法中放置位图的矩形的值似乎在屏幕内
猜你喜欢
  • 1970-01-01
  • 2017-06-25
  • 2014-04-08
  • 2018-11-28
  • 1970-01-01
  • 2012-03-16
  • 2020-02-25
  • 2018-06-04
  • 1970-01-01
相关资源
最近更新 更多