Главная / Action Script 3

Такие сообщения означают, что код не содержит ошибок и может быть успешно скомпилирован, однако может отличаться от того, что задумал автор. Чтобы разрешить определение этих потенциальных ошибок, следует компилировать проекты ActionScript в режиме уведомлений.

Некоторые из этих уведомлений (например, "Отсутствует объявление типа") относятся к выбранному стилю написания кода. Другие (например, "Недопустимое присваивание значения null") указывают на то, что инструкции верны, однако их поведение, возможно, будет отличаться от задуманного . Все моменты, связанные с экспортом кода ActionScript 2.0 в ActionScript 3.0, относятся к третьему типу предупреждений.


 КодСообщениеОписание
 1009Для %s '%s' отсутствует объявление типа. Некоторые предпочитают не объявлять тип данных при написании кода. Для возвращенного функцией значения, параметра или переменной отсутствует объявление типа. Однако объявление типа позволяет компилятору написать более эффективный код, а также обнаружить больше ошибок на этапе компиляции. Включите это предупреждение для напоминания об отсутствии объявления типа.
 1013Переменные типа %s не могут быть неопределенными. Перед сравнением неопределенное значение будет приведено к типу %s. Только переменные типа * могут быть неопределенными. За исключением некоторых случаев, неинициализированные переменные по умолчанию имеют значение null, а не undefined. Исключениями являются: Переменные типа Boolean, которые по умолчанию имеют значение false. Переменные типа Number, которые по умолчанию имеют значение NaN, а также переменные типа int или uint, которые по умолчанию имеют значение 0.
 1031Ошибка миграции: Результатом новой %s будет возвращаемое значение %s, а не новый экземпляр этой функции. Это предупреждение связано с миграцией кода. Поведение обнаруженного кода в ActionScript 3.0 отличается от его поведения в ActionScript 2.0, как показано в следующем примере:
function f(){
   this.b = 22;
   this.a = new Array(2);  
   this.a[0] = 33;
   this.a[1] = 44;
   return a; 
   } 
   // возвращает новый экземпляр f в ActionScript 2.0 и новый массив из двух элементов в ActionScript 3.0
   var d = new f();  // Предупреждение
   trace(d.a);       // undefined в ActionScript 3.0, [33,44] в ActionScript 2.0.
 1035Использование Boolean() без аргументов. Это предупреждение связано с миграцией кода. Функция Boolean() возвращает значение false в ActionScript 3.0, но undefined в ActionScript 2.0.
 1039Ошибка миграции: При вызове функции Number('') с пустым строковым аргументом возвращается значение 0 в ActionScript 3.0 и значение NaN в ActionScript 2.0. Это предупреждение связано с миграцией кода. Вызов метода Number() с аргументом типа String игнорирует все пробелы в строке и возвращает по умолчанию значение 0, если не найдено ни одной цифры. В ActionScript 2.0 присутствие пробела в строке приводит к возвращению значения NaN.
 1045Ошибка миграции: Способ обработки элементов типа null и undefined при помощи Array.toString() изменился. Это предупреждение связано с миграцией кода. В ActionScript 2.0 элементы массива типа null преобразуются в null, а элементы типа undefined преобразуются в undefined. В ActionScript 3.0 и элементы типа null, и элементы типа undefined преобразуются в пустую строку ''. Если ваш код преобразует вывод toString() из массива, может потребоваться настройка кода с учетом этой разницы.
 1059Ошибка миграции: Свойство %s больше не поддерживается. %s. Это предупреждение связано с миграцией кода. Вы пытаетесь использовать свойство, которое не существует в ActionScript 3.0.
 1061Ошибка миграции: Метод %s больше не поддерживается. %s. Это предупреждение связано с миграцией кода. Вы пытаетесь использовать метод, который не существует в ActionScript 3.0.
 1066__resolve больше не поддерживается. 
 1067Ошибка миграции: __resolve больше не поддерживается. Используйте новый класс Proxy, обеспечивающий сходную функциональность. Это предупреждение связано с миграцией кода. См. раздел Proxy в данном руководстве по языку для получения дополнительной информации о замене __resolve.
 1071Ошибка миграции: _level больше не поддерживается. Дополнительные сведения см. в пакете flash.display. Это предупреждение связано с миграцией кода. Вы пытаетесь использовать свойство, которое не существует в ActionScript 3.0.
 1073Ошибка миграции: %s не является динамическим классом. Члены экземпляров не могут добавляться динамически. Это предупреждение связано с миграцией кода. В ActionScript 2.0 многие классы, например Number, являются динамическими, т. е. к экземплярам этих классов можно добавлять новые свойства во время выполнения. Данное предупреждение выводится при попытке кода добавить свойство к экземпляру не динамического класса.
 1083Ошибка миграции: Поведение метода %s в ActionScript 3.0 будет другим из-за изменения области видимости для ключевого слова this. Дополнительную информацию см. в описании предупреждения 1083. Это предупреждение связано с миграцией кода. Это предупреждение выдается, когда метод объекта используется в качестве значения, как правило, в качестве функции обратного вызова. В ActionScript 2.0 функции выполняются в том контексте, из которого они вызываются. В ActionScript 3.0 функции всегда выполняются в том контексте, в котором они были определены. Таким образом, имена переменных разрешаются в класс, частью которого является функция обратного вызова, а не относительно контекста, из которого она вызывается, как в следующем примере:
class a 
{ 
   var x; 
   function a() { x = 1; } 
   function b() { trace(x); } 
}

var A:a = new a();
var f:Function = a.b; // здесь выводится предупреждение
var x = 22;
f(); // выводит 1 в ActionScript 3.0 и 22 в ActionScript 2.0
 1085Областью видимости %s будет являться пространство имен по умолчанию: %s internal. Она не будет видима за пределами пакета. Некоторые предпочитают не объявлять пространство имен при написании кода. Включите это предупреждение для вывода напоминания при отсутствии объявления пространства имен или спецификатора доступа в определении. Без этого определение не будет видимо для кода, расположенного за пределами этого файла. Чтобы сделать его видимым для кода, расположенного за пределами файла, объявите его со спецификатором доступа public или с пространством имен. Чтобы сделать определение локальным для этого файла и избежать появления этого предупреждения, объявите определение как private.
 1087Ошибка миграции: В ActionScript 3.0 свойства объекта перечисляются в случайном порядке внутри оператора "for x in target". Это предупреждение связано с миграцией кода. В ActionScript 2.0 порядок обработки свойств объекта всегда был одинаковым. В ActionScript 3.0 этот порядок является случайным и может меняться от компьютера к компьютеру. При возникновении непредвиденного поведения, связанного с очередностью, проверьте этот цикл, чтобы определить, может ли это изменение поведения повлиять на ваш код.
 1089Код ошибки: %s. Это связано либо с поврежденным исходным файлом, либо с ошибкой в коде компилятора. Обратитесь в компанию Adobe, Inc. для регистрации этой ошибки.
 1091Ошибка миграции: %s Это предупреждение связано с миграцией кода. В ActionScript 2.0 при объявлении метода с использованием специального имени (например, onMouseDown) Flash вызывает этот метод при наступлении определенного события. В ActionScript 3.0 необходимо вызвать addEventListener() для метода, чтобы зарегистрировать его для получения этого события. См. подробности в разделе addEventListener в данном руководстве по языку.
 1093Вместо ожидавшегося значения типа uint (положительного) использовано отрицательное значение. Присваивание отрицательного значения переменной типа uint имеет своим результатом большое положительное значение. var x:uint = -1; trace(x); // 4294967295.
 1097Логически некорректное сравнение со значением null. Переменные типа %s не могут иметь значение типа null. Экземпляры типа Boolean, int, uint и Number не могут иметь значение null. Данный тип оператора сравнения преобразует значение null в значение false перед его сравнением со значением типа Boolean или в значение 0 перед сравнением с типом данных Number, int или uint.
 1099Логически некорректное сравнение со значением NaN. Эта инструкция всегда дает в результате значение false. Элемент NaN имеет уникальное математическое свойство, которое обуславливает получение значения false в результате любой операции сравнения, в которой участвует этот элемент. Вместо этого используйте глобальную функцию isNaN() для обнаружения значения NaN, как показано в следующем примере:
trace(NaN == NaN); // false!
trace(NaN != NaN); // снова false!
trace(isNaN(NaN)); // true
 1101Присваивание внутри условного выражения. Имелось в виду == вместо =? Результатом инструкции присваивания = является значение справа от инструкции =. Инструкцию присваивания можно использовать для проверки выполнения определенных условий, но это не рекомендуется. Как правило, данное предупреждение появляется в результате опечатки, когда имелась в виду проверка равенства ==, как показано в следующем примере:
var x:Boolean = false;
var y:Boolean = true;
// трудно определить, намеренно ли строка ниже устанавливает значение x на значение y или это опечатка
if (x = y) { trace("x is assigned y's value of true, making the conditional test evaluate as true."); }
 1103Вместо ожидавшегося значения %s использовано значение типа null. Переменным типа Number, int и uint нельзя присваивать значение null. Значение null неявно приводится к значению false при присваивании к значению типа Boolean, и к значению 0 при присваивании к значению типа int, uint или Number.
 1105Для класса %s не была указана функция конструктора. Некоторые предпочитают не указывать функцию конструктора при написании кода. Включите данное предупреждение, если хотите всегда объявлять конструкторы для классов. Данное предупреждение помогает определить случаи, когда при изменении имени класса не меняется имя его конструктора. Без этого предупреждения подобные случаи не отмечаются как проблема, а вышеупомянутый конструктор становится обычной функцией.
 1111Константа не была инициализирована. 
 1113Array(x) ведет себя так же, как и new Array(x). Чтобы привести значение к типу Array, используйте выражение "x as Array" вместо "Array(x)". 
 1115Инструкция super() будет выполнена перед переходом к конструктору. Добавьте вызов инструкции super() внутри конструктора, если хотите явно управлять ее выполнением. Добавление вызова инструкции super() внутри конструктора является одним из предпочтений при написании кода. Включите данное предупреждение, если хотите всегда явно управлять временем вызова инструкции super(). Это может помочь выявить случаи, когда требовалось вызвать инструкцию super() после локального кода инициализации, но ее забыли добавить.
 3552Добавление текста к объекту TextField при помощи += осуществляется в несколько раз медленнее, чем при помощи метода TextField.appendText(). См. описание метода appendText() класса TextField в данном руководстве по языку для получения подробных сведений о значительной оптимизации операций с текстом.
 3554Вместо ожидавшегося значения типа %s использовано значение-функция. Возможно, отсутствуют круглые скобки () после названия функции. В ActionScript можно использовать в качестве значений сами функции. В рассматриваемом коде используется значение типа Function вместо ожидаемого значения типа Function, Object или *. Как правило, данное предупреждение вызвано опечаткой, при которой опущены круглые скобки () после названия функции.
 3556Оператор instanceof устарел, вместо него используйте оператор is. 
 3574Ошибка миграции: Класс XML, существовавший в ActionScript 2.0, был переименован в XMLDocument. Это предупреждение связано с миграцией кода. Класс XML в ActionScript 3.0 отличается от того же класса в ActionScript 2.0. В ActionScript 3.0 класс XMLDocument является эквивалентом класса XML в ActionScript 2.0. Класс XML в ActionScript 3.0 обладает улучшенной функциональностью и более удобным и мощным API-интерфейсом. Подробные сведения см. в разделе XML руководства по языку ActionScript.
 3576Date(x) ведет себя так же, как и new Date().toString(). Чтобы привести значение к типу Date, используйте выражение "x as Date" вместо "Date(x)". 
 3582При импорте пакета под тем же именем, что и текущий класс, идентификатор этого класса будет скрыт в данной области видимости. 
 3584Указано более одного аргумента с именем "%s". Ссылки на этот аргумент всегда будут разрешаться к последнему из них. 
 3590Вместо ожидавшегося значения типа Boolean использовано значение другого типа. 
 3591Вместо ожидавшегося значения типа Boolean использовано значение %s. Выражение будет приведено к типу Boolean. 
 3593%s не является известным свойством динамического класса %s. В строгом режиме компиляции не проверяются неопределенные свойства экземпляров динамических классов. Типы Date, RegExp и Error являются динамическими для обратной совместимости с ECMAScript. Данное предупреждение связано с использованием неопределенных свойств в экземплярах этих классов. Часто встречающейся ошибкой является попытка определить или задать несуществующее свойство year со значением типа Date. Правильным названием свойства является fullYear.
 3595%s не является известным методом динамического класса %s. В строгом режиме компиляции не проверяются неопределенные методы экземпляров динамических классов. Типы Date, RegExp и Error являются динамическими для обратной совместимости с ECMAScript. Данное предупреждение связано с использованием неопределенных методов в экземплярах этих классов.
 3597Повторяющееся определение переменной. Компилятор обнаружил повторяющееся определение переменной. Это может привести к непредвиденным результатам. ActionScript не поддерживает область видимости переменных на уровне блока. Все переменные, определенные в теле функции, существуют в той же области видимости, даже если они определены внутри инструкции if, инструкции while, инструкции for и т. д.: например, следующий код объявляет переменную x дважды:

function test() {
	var x:Number = 10;
	if (true) {
	    for (var x=0; x < 5; x++)  // здесь выводится предупреждение, так как это повторное определение x
	    trace(x);
	}
	trace(x); // 5, а не 10.  Последнее значение, заданное циклом for выше, является текущим значением x
}
 3598Имя определения совпадает с именем импортированного пакета. Неполные ссылки на это имя будут разрешаться в пакет, а не в определение. 
 3599Имя определения совпадает с именем импортированного пакета. Неполные ссылки на это имя будут разрешаться в пакет, а не в определение. Если имя определения совпадает с именем пакета в области видимости, то любые неполные ссылки на это имя будут разрешаться в этот пакет вместо определения. Это может привести к непредвиденным ошибкам при попытке сослаться на переменную. Все ссылки на это определение должны быть полными, чтобы они разрешались в определение, а не в пакет.
 3600Возможно, попытка удалить фиксированное свойство. 
 3601Невозможно удалить объявленное свойство %s. Чтобы освободить выделенную для него память, установите его значение на null. Delete удаляет динамически определенные свойства из объекта. Невозможно удалить объявленные свойства класса, происходит молчаливый сбой операции. Чтобы освободить выделенную для переменной память, установите ее значение на null.
 3602Использование устаревшего определения. 
 3603Определение %s устарело. Это определение устарело и может быть удалено в будущем.
 3604Использование устаревшего определения. 
 3605%s  
 3606Использование устаревшего определения. 
 3607Определение %s устарело. Используйте %s.  
 3608Использование устаревшего определения. 
 3609Определение %s является устаревшим с %s. Используйте %s.  
 3610Использование устаревшего определения. 
 3611Определение %s является устаревшим с %s.