Рассмотрим такой пример:
var myArray = ["Flash", "MX 2004"]; var newArray = myArray; Здесь создается массив myArray с двумя элементами и далее он присваивается переменной newArray (при этом данная переменная получает ссылку на массив). Если потом мы присвоим новое значение второму элементу массива myArray: myArray[1] = "8"; и обратимся к нему через переменную newArray: s = newArray[1] ; то переменная s получит строку "8" - новое значение второго элемента этого массива. Т. е. фактически переменные myArray и newArray указывают на один и тот же массив.
Объекты
Итак, мы познакомились с типами данных, переменными, константами, операторами, действиями, простыми и сложными выражениями, функциями и массивами. Теперь настала пора узнать о самых сложных структурах данных ActionScript - объектах.
Понятия объекта и экземпляра
Объект - это сложный тип данных, включающий в себя множество переменных - свойств - и набор функций для манипулирования значениями этих переменных - методов. Здесь все достаточно просто: свойства хранят некие данные, а методы их обрабатывают, выдавая на выходе другие данные или совершая действия с самим объектом. Каждый объект должен иметь уникальное имя, по которому к нему можно обратиться.
Собственно, сам объект - это всего лишь тип данных, такой же, как числовой или строковый, т. е. некое абстрактное описание, включающее в себя набор свойств и методов. От объекта порождаются конкретные его "представители" - экземпляры объекта. Не правда ли, напрашивается аналогия образца и созданных на его основе экземпляров?
Объект можно представить себе как некий прибор, снабженный набором регуляторов и кнопок. Регуляторы задают значения свойств, а кнопки запускают на выполнение методы. Мы можем заполучить один из приборов данного типа (экземпляр), выставить нужные значения свойств с помощью регуляторов и нажать какую-либо кнопку, инициировав выполнение соответствующего метода. Внутреннее устройство этого прибора от нас скрыто, мы не знаем, что у него внутри, для нас важно только одно - чтобы он выполнял свою задачу.
Теперь давайте вернемся к нашему любимому Flash. Любой клип на его рабочем листе фактически является экземпляром объекта movieciip (об этом объекте мы поговорим далее в этой главе). Пусть имеется клип someciip, обладающий свойством width (ширина) и методом gotoAndPlay, запускающим воспроизведение анимации этого клипа с какого-то кадра. Тогда можно написать такой сценарий: someClip.width = 200; someClip.gotoAndPlay(3); Здесь мы обратились к методу и свойству объекта someciip, использовав уже знакомый нам синтаксис "с точкой". А именно, отделили точкой имя объекта от имени свойства (метода).
Итак, с теорией мы разобрались. Приступим теперь к практической работе с объектами и их экземплярами.
Работа с объектами и их экземплярами
Перед тем как начать работу с экземпляром какого-либо объекта, его нужно создать. Создание экземпляра объекта выполняется с помощью оператора
new:
<Переменная> = new <.Имя объекта>([<Список параметров, разделенных 1Ьзапятыми>] )