Использование содержимого ArrayList для рисования рамки - PullRequest
0 голосов
/ 22 октября 2011

Итак, у меня есть этот список массивов, который заполняется с помощью файла 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 не срабатывают. те теги журнала над ними возвращают все значения, которые они должны, и load object всегда возвращает либо 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

Заметьте, что журнал, построенный в квадрате, не возвращается, так почему же операторы my if не распознают значение loadObject?

1 Ответ

1 голос
/ 22 октября 2011

Джек, строки НИКОГДА не должны сравниваться с помощью оператора ==.Вот как вы должны его использовать:

String.valueOf(loadObject).equalsIgnoreCase("001")
...