Показать сообщение отдельно
Старый 09.11.2006, 12:51
MerlinTwi вне форума Посмотреть профиль Отправить личное сообщение для MerlinTwi Посетить домашнюю страницу MerlinTwi Найти все сообщения от MerlinTwi
  № 101  
Ответить с цитированием
MerlinTwi
 
Аватар для MerlinTwi

Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
По умолчанию 95. Flash 9: Strict Mode

Во Flash 9 добавлен новый пункт настройки ActionScript 3, называется "strict mode" (расположен: Edit > Preferences > ActionScript > ActionScript 3.0 settings... > Strict mode). Если strict mode включен, то компилятор более строго проверяет код, особенно соответствие типов, и не создает SWF даже при незначительных ошибках. К примеру, свойство "constructor" класса Object не определено в самом классе, а только в прототипе. Поэтому, если попытаться обратиться к этому свойству в не динамическом классе в strict mode, компилятор выдаст ошибку. Пробуем:
Код:
var mySprite:Sprite = new Sprite();
trace(mySprite.constructor);
Компиляция:
Код:
**Error** Scene 1, Layer 'Layer 1', Frame 1 : Line 2, Column 16 : [Compiler] Error #1119: Access of possibly undefined property constructor through a reference with static type flash.display:Sprite.
trace(mySprite.constructor);
ReferenceError: Error #1065: Variable Timeline0_9f132e9d986cc749b16415211316a5f0 is not defined.
В данном случае стоит сделать приведение типа к Object, который является динамическим, поэтому ошибки не будет:
Код:
var mySprite:Sprite = new Sprite();
trace(Object(mySprite).constructor); // [class Sprite]
__________________
Создатель: Бойцовский клуб | TimeZero | Sky2Fly
Я возьму сам.