testThread
не вызывается при создании объектов Thread
в цикле for - метод вызывается всякий раз, когда запускается поток. И это может произойти позже.
В вашем случае потоки начали работать после завершения цикла for - к тому времени i
было равно 3. Таким образом, testThread
вызывается 3 раза со значением 3
.
Если вы пытаетесь сделать что-то вроде рисунка, вам не нужно сохранять, какие углы находятся вверх / вниз, так как это можно определить по окружающим плиткам .
Например, если текущий тайл имеет высоту n
, а высота тайла на один выше текущего тайла - height n + 1
, то текущий тайл должен иметь «верхний угол». вверх "
Отлично! Спасибо! Я попробую это реализовать. Еще одна мысль, чтобы завершить ответ: можно ли сохранить высоту и идентификатор плитки в виде целого числа?
Да. Вам нужно будет использовать Побитовые операции .
Если вы разделите целое число поровну между высотой и идентификатором, используя первые 16 бит для высоты и остальную часть идентификатора
var id = tile & 0x0000FFFF; //mask the first 16 bits
var height = tile >>> 16; //shift the first 16 bits to the right
Настройка может быть выполнена аналогичным образом
tile &= 0xFFFF0000; //remove id bits
tile |= id; //set new id
tile &= 0x0000FFFF; //remove height bits
tile |= (height << 16);
Если высота находится в диапазоне [0, 255], вы можете сохранить 4 высоты в одном целом числе, используя битовые манипуляции. В шестнадцатеричном формате:
0xAABBCCDD, AA = первая высота, BB = вторая и т. Д.
Чтобы получить крайнюю левую высоту, вы должны сделать ((0xAABBCCDD & 0xFF000000) >> 24) & 0xFF
, который возвращает 170 (0xAA).
Чтобы установить: целое число & = (0x00FFFFFF); / * Очистить значение * / integer | = (height << 24);
Да, вы можете:
var corners = 11; // binary 1011;
var topCornerUp = corners & 0x8;
var bottomCornerUp = corners & 0x2;
Однако, если вы хотите его оптимизировать, подумайте, что Якоби сказал - вы можете хранить массив углов вместо того, чтобы сохранять их отдельно для каждой плитки.
Является ли область прямоугольной? Если да, то вы можете просто хранить ширину и высоту области, длину плитки и массив целых чисел, представляющих высоты вершин.