T-W > with
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