Портирование Java на AS3
Я работаю над переносом класса Java на AS3. Большинство внутренностей класса включают программирование на битовом уровне. Я сталкивался с этим кодом, написанным на Java:
int pixels[] = new int[width * height];
short gpixels[] = new short [width * height];
далее в коде я сталкиваюсь с чем-то вроде этого:
gpixels[i]
Что является эквивалентом этих двух переменных в AS3. Это ByteArrays или целые числа? Я думал, что short - это 16-разрядное целое число, а int - 32-разрядное целое.
2 ответа
ActionScript не имеет коротких, длинных, плавающих, двойных и т. Д.
Вы бы отобразили числовые типы на int, uint или Number.
Тип Java Тип AS3 ----------------- -------------- java.lang.Integer int java.lang.Short int java.lang.Long Number java.lang. Двойной номер java.lang.Float Number AS3 int пределы: от -2147483647 до 2147483647 Пределы uint AS3: от 0 до 4294967295 Пределы номера AS3: -1,79769313486231e+308 до 1,77969313486231e + 308
AS3 - это число с плавающей точкой двойной точности IEEE-754
AS3 имеет побайтовые и побитовые операции.
Вы правы, когда вы указываете размеры типов данных, short равен 16 битам, а int равен 32 битам. Я обнаружил, что чаще всего вижу использование коротких, когда кто-то пытается сохранить память в массиве - шорты, в конце концов, вдвое меньше целых чисел.
В зависимости от того, насколько велик массив в действительности, и от того, что вы делаете со значением, хранящимся в этой позиции (цветовой код и т. Д.), Вы можете придерживаться наименьшего возможного типа данных.
Массив из 640 x 480 целых чисел занял бы по крайней мере 1 228 800 байт без издержек, в то время как массив 640 x 480 шорт занял бы всего 614 400 байт.
Если сомневаетесь, используйте как можно меньше памяти, особенно в графической среде, где вы быстро расходуете большие объемы памяти с буферами.