【发布时间】:2014-11-29 07:15:01
【问题描述】:
我正在为 Android 编写游戏。游戏元素的颜色是通过存储 RGBA 值的 ColorTheme 对象设置的。 在初始化例如一个三角形,一个带有 RGBA 值的数组,来自 ColorTheme 对象,正被传递给构造函数。 虽然 ColorTheme-Object 中的颜色在初始化后永远不会改变,但三角形的颜色会改变。我试图找出原因。 我注意到,如果我通过 ColorTheme-Array 中的元素传递一个新数组,而不是将 ColorTheme 对象本身传递给 Triangle 构造函数,它就像我想要的那样工作。这真的无关紧要,因为 Java 中没有指针之类的东西(对吗?)。
@Override
public void onSurfaceChanged(GL10 gl10, int width, int height) {
//...
mThemes = new ColorTheme[]{
new ColorTheme(
new float[]{0.20f, 0.71f, 0.91f, 1.00f}, // blue circle
new float[]{1.00f, 1.00f, 1.00f, 1.00f}, // white obstacle
new float[]{1.00f, 1.00f, 1.00f, 1.00f}, // white triangle
new float[]{0.00f, 0.60f, 0.80f, 1.00f} // shadow
),
new ColorTheme(
new float[]{0.27f, 0.40f, 0.80f, 1.00f}, // purple circle
new float[]{1.00f, 1.00f, 1.00f, 1.00f}, // white obstacle
new float[]{1.00f, 1.00f, 1.00f, 1.00f}, // white triangle
new float[]{0.60f, 0.20f, 0.80f, 1.00f} // shadow
),
new ColorTheme(
new float[]{0.60f, 0.80f, 0.00f, 1.00f}, // green circle
new float[]{1.00f, 1.00f, 1.00f, 1.00f}, // white obstacle
new float[]{1.00f, 1.00f, 1.00f, 1.00f}, // white triangle
new float[]{0.40f, 0.60f, 0.00f, 1.00f} // shadow
)
};
//...
// Values keep changing after initialization like this
mShadowTriangle = new Triangle(mScreenRatio, mThemes[outerThemeIndex].theme[3],true);
// They don't like this
mShadowTriangle = new Triangle(mScreenRatio, new float[]{mThemes[outerThemeIndex].theme[3][0],mThemes[outerThemeIndex].theme[3][1],mThemes[outerThemeIndex].theme[3][2],mThemes[outerThemeIndex].theme[3][3]},true);
}
【问题讨论】: