Словарь ActionScript. Краткий обзор

       

With


Синтаксис

with (object) { statement(s);

}

Аргументы

object Экземпляр ActionScript объекта или мувиклипа.

statement(s) Команда или группа команд, заключенных в фигурные скобки.

Описание



Команда; временно изменяет область контекстного действия (или путь), используемые для определения выражений и команд в statement(s). После выполнения команды with, область действия восстанавливается к первоначальному значению.

Object соответствует контекстной области, в которой читаются свойства, переменные и функции. Например, если object - myArray и два его свойства определены, как length и concat, эти свойства автоматически читаются как myArray.length и myArray.concat. В другом примере, если object есть state.california, то это то же самое, как если бы любая команда или операторы внутри команды with были вызваны изнутри экземпляра california.

Для нахождения значения идентификатора в statement(s), ActionScript начинает поиск в начале контекстной области, определенной object и ищет их в каждом уровне контекста в характерном порядке.

Контекстная область, используемая командой with, определяет идентификаторы начиная с первого элемента следующего списка и до последнего:

object вызванный изнутри команды with
object вызванный наиболее удаленным местом команды with
Активированный объект (временный объект, созданный автоматически, когда функция вызвана для хранения локальных переменных.)
Мувиклип, содержащий текущий исполняемый скрипт
Глобальный объект (предопределенные объекты, такие как Math, String)

Во Flash 5 команда with заменяет нежелательную команду tellTarget. Предпочтительнее использовать with вместо tellTarget, потому что стандарт ActionScript расширен к стандарту ECMA-262. Принципиальное различие между with и tellTarget командами то, что with обращается к клипу или другим объектам как к их аргументам, в то время как tellTarget обращается к пути (target path), идентифицирующем мувиклип и не может использовать объекты.

Для установки переменной внутри команды with, она должна быть объявлена снаружи или должен быть введен полный путь до линейки (Timeline) на которой необходимо разместить переменную. Если вы установили переменную в команде with без ее объявления, команда with будет искать значение согласно контексту. Если переменная уже не существует, новое значение будет установлено на линейке, с которой команда with была вызвана.






Пример



Следующий пример устанавливает свойства x и y экземпляра someOtherMovieClip и затем командует ему перейти на третий кадр и остановиться:

with (someOtherMovieClip) { _x = 50; _y = 100; gotoAndStop(3); }

Следующий отрывок кода показывает, как можно написать предшествующий пример без использования команды with:

someOtherMovieClip._x = 50; someOtherMovieClip._y = 100; someOtherMovieClip.gotoAndStop(3);

Этот код также можно написать с использованием команды tellTarget:

tellTarget ("someOtherMovieClip") { _x = 50; _y = 100; gotoAndStop(3); }

Использование команды with полезно для одновременного вызова многих элементов в контекстном листе. В следующем примере встроенный объект Math помещен в начало объектной области (контекста). Установка Math, как объекта по умолчанию, приводит идентификаторы cos, sin и PI к Math.cos, Math.sin и Math.PI соответственно. Идентификаторы a, x, y и r - не методы или свойства объекта Math, но так как они существуют в объектной области (контексте) функции polar, они приводятся к к соответствующим локальным переменным.

function polar(r){ var a, x, y with (Math) { a = PI * r * r x = r * cos(PI) y = r * sin(PI/2) } trace("area = " +a) trace("x = " + x) trace("y = " + y) }

Возможно использование вложенных команд with для доступа к информации во многих контекстных областях. В следующем примере экземпляры fresno и salinas являются дочерними по отношению к california. Оператор устанавливает значения _alpha для fresno и salinas без изменения значения _alpha у california.

with (california){ with (fresno){ _alpha = 20; } with (salinas){ _alpha = 40; } }



См. также



tellTarget


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