Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответ СТП.doc
Скачиваний:
9
Добавлен:
24.09.2019
Размер:
181.25 Кб
Скачать

9.Назначение и особенности классов Object и DataProvider

Класс Object находится в корне иерархии классов ActionScript. Объекты создаются конструкторами с помощью синтаксиса оператора new, и им можно динамически присвоить свойства. Объекты могут также создаваться путем присвоения литерала объекта (см. ниже):

var obj:Object = {a:"foo", b:"bar"}

Все классы, которые не объявляют базовый класс явным образом, расширяют встроенный класс Object.

Класс Object можно использовать для создания массивов ассоциативных элементов. В сущности, массив ассоциативных элементов является экземпляром класса Object, и каждая пара «ключ-значение» представлена свойством и его значением. Еще одна причина объявить массив ассоциативных элементов с помощью типа данных Object состоит в том, что после этого можно использовать литерал объекта, чтобы заполнить массив ассоциативных элементов (но только в тот раз, когда он объявлен). В следующем примере массив ассоциативных элементов создается с помощью литерала объекта, доступ к элементам выполняется как с помощью оператора-точки, так и посредством оператора доступа к массиву, а затем путем создания нового свойства создается новая пара ключ-значение:

var myAssocArray:Object = {fname:"John", lname:"Public"};

trace(myAssocArray.fname); // John

trace(myAssocArray["lname"]); // Public

myAssocArray.initial = "Q";

trace(myAssocArray.initial); // Q

Создание объекта DataProvider с помощью ActionScript

Объект DataProvider — источник данных, с помощью которого можно заполнить данными компоненты ComboBox, DataGrid, List и TileList. Каждый из этих классов компонентов имеет свойство dataProvider, которому можно назначить объект DataProvider для заполнения данными ячеек компонента. Как правило, поставщик данных — это коллекция данных, например объект Array или XML.

Чтобы создать объект DataProvider, можно создать данные в объекте Array или XML и передать его в качестве параметра value конструктору DataProvider.

Примечание. В ActionScript 3.0 объект Array или XML нельзя назначить напрямую свойству dataProvider, так как свойство определяется в качестве объекта DataProvider и может получать только объекты типа DataProvider.

Добавлять элементы в объект DataProvider можно с помощью addItem() и addItemAt().

Кроме того, с помощью объекта DataProvider можно удалять или заменять элементы в компоненте.

Объект DataProvider можно также объединять с другим и сортировать с помощью методов merge(), sort() и sortOn().

10. Иерархия классов событий и способы обработки события в Action Script

Под основными событиями я понимаю те, которые мы наиболее часто используем в разработке наших Flash приложений, игр и, иногда даже, баннеров. Перечислим их:

1. onPress — событие, которое срабатывает при нажатии на клип;

2. onRelease — нажали на клип мышкой и отпустили. Схоже с onPress, но на мой взгляд, более удобно, что ли. Заметьте, все стандартные кнопки в Windows срабатывают именно на это событие, а не на просто «нажал». onRelease так же даёт пользователю «шанс» отказаться от нажатия, если он, допустим, нажал и понял, что не хочет нажимать =) На практике, на самом деле, встречается очень часто. Чтобы не нажимать, человеку всего-то и нужно увести курсор с объекта и отпустить зажатую кнопку мыши там;

3. onReleaseOutside — как раз то самое событие «нажал-и-отпустил-за-пределами-клипа», которое я описывал чуть выше;

4. onRollOver — навести курсором на объект;

5. onRollOut — убрать курсор мышки с объекта;

6. onEnterFrame — событие, которое срабатывает каждый раз при смене кадра в вашей флешке. Если быть точнее, то происходит это один раз в интервал времени равный смене кадра. Допустим, если FPS вашей флешки равен 30, то это событие будет происходить 30 раз в секунду.

Создание событий разберём на примере onRollOver:

obj_mc.onRollOver = function(){ this._alpha=50; }

1. obj_mc — это объект для которого мы создаём событие;

2. onRollOver — название события. Вместо него могло бы стоять onRelease, onPress или другие;

3. function(){ this._alpha=50; } — действия, которые будут происходить при наступлении данного события. В частности у нас, объект, на который мы наведём курсором мыши, станет наполовину прозрачным.

Задавать действия можно не только таким способом. Например, если у нас есть функция, вызов которой нужно производить по нажатию, то код будет следующим:

obj_mc.onPress = name_function();

Где name_function() — это имя функции, которую нужно будет выполнить.

Так же бывают случаи, когда одни и те же действия выполняются для двух или более событий. Что мы делаем в этом случае? Мы делаем следующее:

obj_mc.onRollOut = obj_mc.onReleaseOutside = function(){ this._alpha=100 };

Удаляем события

Иногда бывает так, что созданное событие требуется отлавливать не бесконечное количество раз, а только определённый период.

delete obj_mc.onRollOver;