У меня есть старый файл AIR, который отлично работает. Я попытался перекомпилировать его, но полученный файл с ошибками.
После копания в коде я обнаружил, что в некоторых местах строки анализируются в int, и что полученный int не соответствует строке.
Поэтому я сделал простой файл Actionscript и выполнил код:
var test:int = parseInt("3710835714");
и переменная будет иметь значение
-584131582
Так что это выглядит как переполнение. Но я удивлен, что файл, который у меня есть (который я сам не компилировал), работает нормально. Поэтому мне интересно - зависит ли внутреннее представление int от того, какую версию библиотек SDK Flex или AIR вы используете для компиляции?
// edit: похоже, все сводится к этому тесту:
var obj:Object = new Object();
obj.val="3710835714";
var test1:Boolean = (obj.val==-584131582);
var test2:Boolean = (int(obj.val)==-584131582);
для меня это оценка
test1=false;
test2=true;
однако - этот старый файл AIR оценивает оба случая как истинные. Как это может быть?