Если обращение к свойству происходит в блоке предложений with
, проверяется наличие этого свойства у объектаПримеры:
Следующий пример демонстрирует разницу между выполнением предложения внутри with
и вне with:PI = 10; // Задать переменную временной диаграммы, PIwith (Math) { // Выполнить предложения в контексте Math trace("pi is: " + PI); // Выводит: 3.1459 (PI - свойство Math)}trace("pi is: " + PI); // Выводит: 10 (Обращение к Math больше нет)
Помимо предоставления удобного доступа к свойствам объекта, with
может использоваться для вызова методов объекта:x = 10;y = 11;with (Math) { larget = max(x, y);}trace(larget); // Выводит: 11
Нельзя определять новое свойство объекта, являющегося целью предложения with
. Обратите внимание в предыдущем примере на то, что переменнаяСледующий код показывает неверную попытку присвоить переменной значение
with (myClip) { var x = 10; // значение x задается в текущей временной диаграмме, // а не в myClip}
Можно, однако, с полным правом использовать with
для воздействия на экземпляры клипов другими способами. Это предложение предоставляет удобный способ работы с глубоко вложенными структурами экземпляров.Например, следующий код:
_root.form.userProfile.userID = "34R56";_root.form.userProfile.gotoAndPlay("guestionnaire");
можно заменить таким:
with (_root.form.userProfile) { userID = "34R56"; gotoAndPlay("guestionnaire");}
Но with
не является единственным способом обеспечения такого удобства. Можно просто присвоить наш экземпляр переменной и использовать эту переменную в ссылках:var userForm = _root.form.userProfile;userForm.userID = "34R56";userForm.gotoAndPlay("guestionnaire");
Следующий пример устанавливает свойства x и y экземпляра
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
полезно для одновременного вызова многих элементов в контекстном листе. В следующем примере встроенный объектfunction polar(r){var a, x, ywith (Math) {a = PI * r * rx = 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;}}
Совместимость:
Используется с 4-ой версии Flash