Самый эффективный способ хранения и извлечения данных карты в AS3?

вот в чем дело, мне нужно хранить разные значения в массиве 2d (или что-то концептуально похожее). Идея состоит в том, чтобы создать 2D-карту с тайлами, а массив будет сохранять идентификатор каждого тайла на карте. Я пытаюсь создать что-то умеренно эффективное, особенно потому, что мне нужно сохранить некоторое использование памяти для последующего использования (это связано с ИИ), и оно должно работать на слабом ПК, но простое создание массива кажется пустой тратой времени места, так как у меня есть только около 50 различных идентификаторов на любой карте.

Я думал, что создания двумерного массива из 8-битных символов будет достаточно, но об этом не может быть и речи с actionscript 3, у него нет 8-битного типа данных char. Могу ли я использовать векторы со строками или что-то в этом роде? Вот я и спрашиваю вас, какой способ был бы наиболее эффективным?


person kebrus    schedule 16.04.2012    source источник
comment
Мой совет: не делайте предварительную оптимизацию. Напишите его в разумных пределах, чтобы он работал, а затем профилируйте его, чтобы увидеть, где на самом деле находятся ваши узкие места. Если бы это был я, я бы использовал Vector.<uint> фиксированного размера, пока профилирование не сказало мне, что это недостаточно быстро. Любая оптимизация до этого просто предположение.   -  person J. Holmes    schedule 16.04.2012
comment
+1 к тому, что сказал 32bitkid. Вектор фиксированного размера, скорее всего, будет вашим самым быстрым вариантом. У вас также есть возможность использовать ByteArray, который даст вам больше контроля. help.adobe.com/en_US/FlashPlatform/ ссылка/экшнскрипт/3/   -  person francis    schedule 16.04.2012
comment
ByteArray кажется тем, что я искал, просто не уверен, достаточно ли он быстр для меня. Я воспользуюсь вашим советом 32bitkid, пока он работает с простым 2d-массивом, но я буду помнить о bytearray и векторах.   -  person kebrus    schedule 16.04.2012


Ответы (1)


Вероятно, лучше использовать ByteArray — http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/ByteArray.html. Вы можете читать и записывать один или несколько байтов за раз. Вы даже можете использовать функцию сжатия, чтобы уменьшить его размер (на самом деле он «застегивает» его).

Вы должны «сгладить» карту в массив байтов, т.е. map[i][j] будет храниться в byteArray[i*nr_columns + j]

person Mircea    schedule 16.04.2012