Класс Object — базовый класс в ActionScript, все остальные (структурные и простые классы) — это расширения класса Object.
Object — это динамический класс, что позволяет добавлять ему новые свойства и методы.
Создание объектов в ActionScript 3
Существует два способа создания объектов в ActionScript 3. Наиболее распространенный способ имеет следующий синтаксис:
var objectName:Object = new Object();
— «objectName
» становится объектом, к которому можно добавлять свои собственные свойства и методы.
Другой способ создания объекта имеет следующий синтаксис:
var objectName:Object = {prop1:val1, prop2:val2, …}
— «prop1
«, «prop2
» представляют свойства объекта «objectName», а «val1» , «val2» — их значения.
Вы можете добавлять столько пар «свойство: значение» через запятую сколько хотите. Если значение имеет строковой тип String
, то оно должно быть записано в кавычках, в отличие от цифровых значений.
Такой способ обычно используется, когда соответствующий объект содержит простой список данных.
Добавление свойств и обращение к ним
Как только вы создали объект при помощи «new Object();», то вы можете определить его свойства. Самый распространенный способ определения свойств объекта это использование оператора точки:
objectName.property_name = value;
Другой способ — использование квадратных скобок (как в ассоциативном массиве):
objectName[‘property_name’] = value;
— Когда используются квадратные скобки, имя свойства должно быть записано в кавычках (простых или двойных).
— «value» может быть числом, строкой (в кавычках), переменной, массивом, или даже свойством другого объекта.
- Чтобы получить доступ к свойствам объекта, можно использовать оператор точки между именем объекта и свойством (
Object.property
), или свойство между квадратными скобками [] после имени объекта (Object["property"]
). - Рекомендуется использовать какой-то один способ (без объединения) для лучшей ясности и понимания кода. В основном для объектов используется оператор точки, а квадратные скобки используются для элементов массива, что позволяет избегать путаницы.
Давайте рассмотрим пример с двумя способами, чтобы показать их функциональность.
// Создаем объект «obj»
var obj:Object = new Object();
// Определяем два свойства, первое при помощи оператора точки, второе при помощи []
obj.site = ‘jwinters.ru’;
obj[‘courses’] = 8;
/*
Это объект также может быть создан при помощи синтаксиса с закругленными скобками
var obj:Object = {site:»jwinters.ru», courses:8};
Представляет все тот же объект
*/
// Инициализируем экземпляр «TextField»
var txt:TextField = new TextField();
// Добавляем в экземпляр «txt» текст, который содержит значения свойств «site» и «courses»
// Для «site» используем [], а для «courses» используем оператор точки
txt.text = obj[«site»]+ ‘ — ‘+ obj.courses;
// используем «addChild()» чтобы добавить /отобразить текст в Flash
addChild(txt); // jwinters.ru — 8
Определение и вызов методов
В своей основе, методы — это функции. Разница между функциями и методами в том, что функцию можно вызывать напрямую по имени, а вызов метода происходит через объект (или экземпляр класса), в котором он определен.
Узнать про методы классов вы можете в справочнике AdobeFlash.
Методы назначаются при помощи обозначения точки. Чтобы определить метод, добавьте имя методу после имени объекта, и в качестве его значения необходимо привязать функцию.
Синтаксис:
objectName.methodName = functionName;
— «functionName
» может быть именем функции, которую вы создали, или функцией созданной напрямую в определении метода, как в следующем синтаксисе:
objectName.methodName = function():DataType { … код функции };
Значение, полученное при вызове метода — это значение возвращенное функцией, связанной с соответствующим методом.
Вот пример. Мы создаем объект со свойством (id) и двумя методами. Для первого метода («getSum()
«) мы назначили функцию, созданную отдельно, а для второго метода («getID()
«) функция создана напрямую в определении метода.
// Создаем функцию, которая будет связана с методом
function f_sum(a:Number, b:Number):String
{
var sum:Number = a+b;
return ‘The sum is: ‘+ sum;
}
// Определяем объект «obj2» со свойством «id», и два метода «getSum» и «getId»
var obj2:Object = new Object();
obj2.id = ‘tutorials’;
obj2.getSum = f_sum;
obj2.getId = function():String {
var idul = ‘Id: ‘+ this.id;
return idul;
};
// Инициализируем экземпляр «TextField»в переменной «txt2»
var txt2:TextField = new TextField();
// Добавляем в экземпляр «txt2» текст, который содержит значения, возвращенные методами «getSum()» и «getId()»
// — «\n» добавляет новую строку
txt2.text = obj2.getSum(7, 8)+ «\n»+ obj2.getId();
// используем «addChild()» для отображения текста в Flash-приложении
addChild(txt2);
— При вызове методов «getSum()
» и «getID()
» программа выполняет код функций, связанных с ними (каждая возвращает строку).
— Обратите внимание, что для того, чтобы связать функцию «f_sum()
» с методом «getSum()
» используется только имя (без круглых скобок), но когда метод вызывается, нужно использовать скобки, а также учитывать параметры связанной функции.
Другим важным аспектом в примере является выражение «this.id
«. Ключевое слово this
часто используется внутри метода и всегда ссылается на текущий объект, через который вызывается метод.
«id
» — свойство объекта «obj2». Таким образом, выражение «this.id
» возвращает значение свойства «id
» текущего объекта (obj2).
Если добавить код, указанный выше, в новый Flash-документ и запустить приложение (Ctrl+Enter), в окне приложения появятся две строки текста:
The sum is: 15
The ID: tutorials
Изменение свойств и методов
Значение свойств и методов объекта, созданного при помощи класса Object, можно изменить в любое время, применив такой же способ, который использовался для их создания:
— Для свойств
objectName.property_name = new_value;
или
objectName["property_name"] = new_value;
— Для методов
objectName.methodName = another_function;
или
objectName.methodName = function():DataType { ... Другой код };
Вот пример. Мы определяем объект со свойством «gen
» и методом «Race()
«, затем изменяем значение.
// определяем объект «obj3» со свойством «gen» и методом «Race()»
var obj3:Object = new Object();
obj3.gen = ‘Animals’;
obj3.Race = function():String { return «Donkeys» };
// используем trace() чтобы проверить значения
trace(obj3.gen+ ‘ — ‘+ obj3.Race()); // Animals — Donkeys
// изменяем значения свойств «gen» и «Race()»
obj3.gen = ‘Birds’;
obj3.Race = function():String { return «Pigeons» };
// проверяем снова значения свойств
trace(obj3.gen+ ‘ — ‘+ obj3.Race()); // Birds — Pigeons
Как видите второе выражение trace() выводит другой результат.
Удаление свойств и методов, проверка их наличия
Чтобы удалить свойство или метод объекта, созданного при помощи класса Object, используйте оператор delete
, как в следующем синтаксисе:
delete objectName.element;
-«element
» — может быть любое свойство или метод объекта «objectName
«.
Если вы хотите проверить определено ли свойство или метод в объекте (или экземпляр класса), используйте оператор in, как в синтаксисе:
«element» in Class
-«element
» должен быть добавлен в кавычки и может быть любым свойством или методом класса («Class
» — может также быть имя объекта, созданного с использованием класса Object
).
Этот оператор возвращает true
если «element
» находится в «Class
«, иначе возвращает false
.
В следующем примере создается объект (obj4) со свойством «gen» и методом «Race()». Мы используем оператор «in» чтобы проверить их наличие, затем мы удаляем их, и проверяем снова их наличие.
// Определяем объект «obj4» со свойством «gen» и методом «Race»
var obj4:Object = new Object();
obj4.gen = ‘Animals’;
obj4.Race = function():String { return «Donkeys» };
// используем «in» чтобы проверить наличие свойства и метода
trace(«gen» in obj4); // true
if(«Race» in obj4) {
trace(obj4.Race()); // Donkeys
}
// Удаляем «gen» и «Race()»
delete obj4.gen;
delete obj4.Race;
// снова проверяем на наличие свойство и метод
trace(«gen» in obj4); // false
if(«Race» in obj4) {
trace(obj4.Race());
}
// Пытаемся обратиться к свойству и методу объекта
trace(obj4.gen+‘ — ‘+ obj4.Race()); // TypeError: Error #1006: Race is not a function …
Обратите внимание на эффект «in» и «delete», и как используется оператор «if».
Скачать FLA-файлы с примерами класса Object в ActionScript 3 вы можете здесь.
Источник: https://coursesweb.net/actionscript/create-objects-as3
Если вам понравилась статья и вы хотите сохранить ее в закладках, то нажмите на значки социальных сетей внизу.