Flash - статьи

         

Область видимости


Flash Player 6 поддерживает концепцию "цепочки областей видимости" (как определено в стандарте ECMA-262). Таким образом, устранены значительные недостатки "прямой области видимости" в Flash Player 5.

Цепочка областей видимости — это список ActionScript-объектов. Flash Player ищет идентификатор, начиная с последнего элемента в цепочке областей видимости, и продолжает подниматься по цепочке, пока не найдет его.

Цепочка областей видимости для типичного сценария ActionScript:

  • Объект Global;
  • Объект MovieClip;
  • Локальные переменные.
  • Конструкция with временно добавляет объект в конец цепочки областей видимости. Когда действие with прекращается, объект удаляется из цепочки областей видимости.

    При определении функции текущая цепочка областей видимости копируется и хранится в объекте функции. При вызове функции происходит переключение текущей цепочки областей видимости на цепочку областей видимости объекта функции, а в конец цепочки добавляется новый объект Local Variables.

    В Flash 5 область видимости функции всегда была следующей:

  • Объект Global;
  • мувиклип, содержащий функцию;
  • Локальные переменные.
  • Список областей видимости никогда не содержал более трех пунктов, кроме случая с использованием with. Это было отклонением от стандарта ECMA-262, и область видимости метода всегда находилась в мувиклипе, содержащем метод, а не в месте определения этого метода.

    В Macromedia Flash Player 6 при определении метода мувиклипа вне самого мувиклипа цепочка областей видимости метода будет содержать внешний объект, а не объект мувиклипа, для которого определяется метод. В таком случае в теле определяемого метода необходимо использовать ключевое слово this, чтобы используемые в этом методе идентификаторы ссылались на объект мувиклипа, а не на внешний объект.

    Имейте в виду, что поддерживается обратная совместимость с Flash Player 5. Для среды разработки Flash 5 применимы те же правила использования области видимости, что и для Flash Player 5.



    Содержание раздела