0

所以我有这个使用 csv 文件填充的数组列表。填充后,它用于将对象绘制到框架中。这是我的 onDrawFrame 方法(我知道它很乱,我稍后会清理)

@Override
public void onDrawFrame(GL10 gl) {
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT |
            GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();
    gl.glScalef(screenWidth/10, screenHeight/7, 0);

    while (currentLoadSpace < totalMapSize){

        loadObject = levelDat.get(currentLoadSpace);

        Log.d(TAG,"currentLoadSpace " + String.valueOf(currentLoadSpace));
        Log.d(TAG,"totalMapSize " + String.valueOf(totalMapSize));
        Log.d(TAG,"loadObject " + String.valueOf(loadObject));
        Log.d(TAG,"x " + String.valueOf(x));
        Log.d(TAG,"y " + String.valueOf(y));

        gl.glPushMatrix();
        gl.glTranslatef(x, y, 0);

        if (String.valueOf(loadObject) == "000"){
            Log.d(TAG, "Empty Space");
        }

        if (String.valueOf(loadObject) == "001"){
            square.draw(gl);
            Log.d(TAG, "draw a square");
        }

        gl.glPopMatrix();
        currentLoadSpace++;
        updateXY();
    }

  currentLoadSpace = 0;
}

基本上这段代码所做的是检查我们试图读取的值的索引是否小于 ArrayList 的总大小。然后它读取该值并根据 if 语句检查它(如果值为 000,那么它不会绘制任何东西,但如果值为 001,那么它将在位置 x,y 处绘制一个正方形)它对中的每个值重复此操作数组列表。

我的问题是 if 语句没有触发。它们上方的那些日志标签返回它们应该返回的所有值,并且加载对象始终返回 000 或 001,但我从未从返回的 if 语句中获取日志标签,并且我的屏幕保持空白。

这是此代码的一个循环的日志。

10-22 11:54:37.821: DEBUG/input(14680): currentLoadSpace 0
10-22 11:54:37.821: DEBUG/input(14680): totalMapSize 55
10-22 11:54:37.821: DEBUG/input(14680): loadObject 001
10-22 11:54:37.821: DEBUG/input(14680): x 0.0
10-22 11:54:37.821: DEBUG/input(14680): y 1.0

注意没有返回正方形绘制的日志,那么我的 if 语句为什么不能识别 loadObject 值?

4

1 回答 1

1

杰克,字符串永远不应该使用 == 操作符进行比较。这是你应该如何使用它:

String.valueOf(loadObject).equalsIgnoreCase("001")
于 2011-10-22T11:48:35.467 回答