Справочник по Flash : ActionScript : Action : with - Выполняет некоторый код в конце указанного объекта

смотрим также

Материал из Справочник Web-языков

Перейти к: навигация, поиск



with

Предоставляет сокращенный способ обращения к свойствам объекта.

Синтаксис:

with (object) {
    statements;
}

Аргументы:

object
Экземпляр ActionScript объекта или мувиклипа.
statements
Команда или группа команд, заключенных в фигурные скобки.

Описание:

Если обращение к свойству происходит в блоке предложений with, проверяется наличие этого свойства у объекта object. Если у object существует указанное свойство, то оно и используется для разрешения ссылки на свойство. Если у object нет такого свойства, оно ищется в текущей временной диаграмме или функции.

Примеры:

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

PI = 10;                 // Задать переменную временной диаграммы, PI
with (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. Обратите внимание в предыдущем примере на то, что переменная larget не определена в объекте Math, поэтому ссылка на свойство воздействует на временную диаграмму или функцию, содержащую предложение with.

Следующий код показывает неверную попытку присвоить переменной значение myClip:

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 экземпляра 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;
	}
}

Совместимость:

Используется с 4-ой версии Flash

Добавить страницу в закладки:
РАЗРЕШАЕТСЯ перепечатывать и копировать информацию ТОЛЬКО ПРИ РАЗМЕЩЕНИИ ссылки на оригинал!
(<A href="https://www.spravkaweb.ru/">Справочник Web-языков</A>)
другие проекты
Rambler\'s Top100 Индекс цитирования