Может вводить в заблуждение из-за ошибки округления с плавающей запятой.При использовании чисел с плавающей запятой вы представляете числа приблизительно, сохраняя два множителя и используя их кратные для представления числа.К сожалению, это ограничивает невозможность представления всех целых чисел, потому что, очевидно, некоторые целые числа являются простыми числами или не могут быть представлены в виде кратных чисел с достаточной точностью.
По соглашению, числа с очень крошечными дробнымичасти округляются до того, как они напечатаны - вот почему вы видите симпатичный вывод, но значения не ведут себя должным образом.
Даже если вы работаете с целыми числами, Flash внутренне преобразует их в числа с плавающей точкой, вычисляет и приводит к приведениюрезультат к ожидаемому типу, поэтому у вас нет целочисленной математики во Flash.
Что вы можете сделать в вашем случае: поскольку starSpawnTime
изначально целое число, похоже, что оно не будетвред, если вы сделали это:
if (!int(startSpawnTime % 10)) { . . . }
или
if (int(startSpawnTime % 10) == 0) { . . . }
Если вы чрезвычайно обеспокоены производительностью, вы можете самостоятельно реализовать целочисленное деление или, возможно, использовать индукцию для вычисления напоминания - ноЯ хотел бы оставить это в качестве упражнения для читателя:)
В качестве отступления: целые числа не обнуляются, яn Flash, после объявления им присваивается значение по умолчанию, целое значение по умолчанию равно 0
.Таким образом, запись var i:int = 0;
является избыточной, var i:int
достаточно.