invalidate() 不刷新视图



我在努力挣扎了一段时间,不确定是否因为在Android Dev或我的愚蠢中缺席了将近2年无效((正在发生。这是一些代码:

gameactivity.java

onCreate
...
final CanvasActivity mCanvasActivity = new CanvasActivity(this);
setContentView(mCanvasActivity);
mCanvasActivity.setOnTouchListener(new OnSwipeTouchListener(this) {
        @Override
        public void onSwipeTop() {
            tilesArray[playerPositionY][playerPositionX] = 0;
            playerPositionY--;
            tilesArray[playerPositionY][playerPositionX] = 2;
            mCanvasActivity.invalidate();
        }

canvasactivity.java

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    movePlayer(canvas);
    Log.e("player", "x " + playerPositionX + " y " + playerPositionY);
}

MovePlayer

if (currentBlock == 0) {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintWall);
            } else if (currentBlock == 1) {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintLabirynth);
            } else if (currentBlock == 3) {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintExit);
            } else {
                canvas.drawRect(posLeft, posTop, posRight, posBottom, paintCharacter);
            }

基本上,当我们滑动到顶部时,移动玩家(在2D数组中减小y(就会更改位置。然后,屏幕上的每个矩形都被重新绘制(整个屏幕都有矩形,这些矩形根据阵列划分的颜色绘制不同的颜色,我认为无关紧要(。我的变量正在正确变化,因此Invalidate((正在启动OnDraw((,但是屏幕上没有更改。任何帮助都非常感谢。

看来我没有将painty重置为每次on Drawd呼叫0,它的绘画正确,而是在屏幕下方。就像我说的那样,可能是,并且是我的愚蠢:(。

相关内容

  • 没有找到相关文章

最新更新