Flash AS3: как вернуть NaN или неопределенный при использовании целочисленных типов данных? - PullRequest
0 голосов
/ 25 января 2011

Я работаю над функцией, которая берет координаты мыши сцены в Flash AS3 и возвращает плитку в шестигранной сетке под курсором.Я хочу, чтобы функция возвращала NaN или undefined, если курсор находится не на плитке, и если это так, целочисленный индекс этой плитки в массиве объектов.целочисленные переменные, возможно, этот тип данных не поддерживает NaN или не определен?Этот код отслеживает 0 после определения tileIndex.Я использую hitTest, потому что hexgrid не квадратный и генерируется случайным образом.Плитка 0 является первой плиткой, и возвращение 0, когда курсор находится вне шестнадцатеричной карты, может вызвать проблемы.

Ответы [ 2 ]

6 голосов
/ 25 января 2011

NaN относится к типу Number.Вы не можете преобразовать его осмысленно в uint.

Если вы действительно должны вернуть NaN, измените сигнатуру функции, чтобы она возвращала :Number, но помните, что вы можете получить небольшое снижение производительности за это, если эта функцияна вашем критическом пути.

Здесь можно использовать некоторые хитрости в стиле C: если значимые индексы плиток всегда положительны, и вы уверены, что никогда не получите более 2 миллиардов плиток, вы можете вернуть-1 означает "не плитка".Вам нужно изменить :uint на :int и быть осторожным с неявными преобразованиями между двумя типами в вашем коде.

1 голос
/ 26 января 2011

Другой метод - использовать MAX_VALUE состояния uint. На практике вы никогда не достигнете значения, но можете проверить его.

Предотвращает много рефакторинга кода return uint.MAX_VALUE и проверять его if(value == uint.MAX_VALUE). Если он находится в цикле enterframe, вы можете попытаться сохранить uint.MAX_VALUE в const, чтобы не получать накладные расходы на поиск переменных внутри класса uint.

...