[英]Trying to change a color in an array
我之前曾问过一个有关检测棋子是否被选中的问题。 我被介绍给数组,现在选择正在按我的要求工作,除了不能更改颜色的事实。
public static Color[] pieceColo = new Color[4]
{ PawnBl1Col, PawnBl2Col, PawnBl3Col, PawnBl4Col};
这是Im固定的数组,PawnBl1Col被声明为白色(以及所有其他值)
if (movement.pieceLocX[movement.pLvalX] <= movement.mouseCord.X
&& movement.pieceLocX[movement.pLvalX] + 100 >= movement.mouseCord.X
&& movement.pieceLocY[movement.pLvalY] <= movement.mouseCord.Y
&& movement.pieceLocY[movement.pLvalY] + 100 >= movement.mouseCord.Y)
movement.pieceColo[movement.pLvalX] = Color.Red;
执行时,if语句运行良好,但是执行命令时它将失败,并且不执行任何操作。
movement.PawnBl1Col = Color.Red;
但是,如果我将颜色阵列替换为上面的颜色阵列,它将无缝运行。
编辑:忘记了很大一部分运动。pLvalX只是一个与每个对象重合的整数。 它会测试所有8个值(将为32)。如果选择了X对象,则X对象会更改颜色,我不确定这是否有意义。 但是即使使用0-3测试颜色阵列也行不通。
在您的绘制代码中,我假设您使用的是movement.PawnBl1Col
作为绘制的颜色?
movement.pieceColo[movement.pLvalX] = Color.Red;
语句未更改movement.PawnBl1Col
变量的值。 它实际上是用Color.Red
替换数组中的条目。
颜色是一种值类型。 像这样使用数组的唯一方法是,如果它包含引用类型,它将起作用。 有点不整洁,但是您可以尝试执行以下操作:
public class MyColor
{
public MyColor(Color color)
{
this.Color = color;
}
public Color Color { get; set; }
}
使用此MyColor
类型作为变量( PawnBl1Col, PawnBl2Col, PawnBl3Col, PawnBl4Col
),并将数组更改为...
public static MyColor[] pieceColo = new MyColor[4] { PawnBl1Col, PawnBl2Col, PawnBl3Col, PawnBl4Col };
然后,您应该可以执行以下操作:
movement.pieceColo[movement.pLvalX].Color = Color.Red;
并在绘图代码中使用movement.PawnBl1Col.Color
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.