gpt4 book ai didi

java - 刷新 Canvas 会删除以前的数据

转载 作者:行者123 更新时间:2023-12-02 06:58:13 26 4
gpt4 key购买 nike

我正在 Canvas 上制作类似战舰游戏的东西。我们来看看这个字段: enter image description here

问题是:当我按下另一个单元格时,黄色单元格会再次变成黑色。我想保存它的状态,这样这个黄色单元就不会再次变成黑色。

这是点击时要执行的操作的代码:

// it's some method A
case 1:
drawHit = true;
this.draw_x = x;
this.draw_y = y;
invalidate();
break;

// It's in onDraw() method
if (drawHit == true) {
Log.d(TAG, "drawHit! drawX = " + draw_x + ", drawY = " + draw_y);
Paint ship = new Paint();
ship.setColor(getResources().getColor(R.color.ship_color));
Rect r = new Rect(draw_x*rebro_piece, draw_y * rebro_piece, (draw_x+1) * rebro_piece, (draw_y+1)*rebro_piece);
canvas.drawRect(r, ship);
drawHit = false; }

最佳答案

我在最近的一个在 Canvas 上打印点的应用程序中遇到了这个问题。每个点都有不同的颜色和大小,我必须保存它们的状态。

您所要做的就是创建一个小类,在其中保存单元格、保存您的信息并将它们全部存储在列表中。在 onDraw() 方法中,在 drawRect() 之前,使用已保存的颜色更新 Paint 对象。

我将在这里向您展示我的 fragment 。 (1个建议:不要每次调用onDraw时都实例化Paint,最好在外部声明它,也许作为类中的私有(private)变量)

private class MyPoint {

private float x;
private float y;
private int color;
private int size;
// + constructor, getters and setters
}

@Override
public void onDraw(Canvas canvas) {
for (MyPoint point : points) {
paint.setColor(point.get_color());
canvas.drawCircle(point.x, point.y, current_size, paint);
}
}

关于java - 刷新 Canvas 会删除以前的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17031444/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com