
- •Основы языка ActionScript 2.0 Для чего нужен Actionscript?
- •События
- •Действия
- •Операторы
- •Ключевые слова
- •Фигурные скобки
- •Точка с запятой
- •Кавычки
- •Комментарии
- •Отступы и пробелы
- •Переменные Объявление
- •Видимость переменных
- •Присваивание
- •Объекты
- •Условные операторы
- •Цикл с переменной
- •Циклы с условием
- •Перечисление свойств
- •Управление циклом
- •Лабораторная работа №1 «Знакомство с ActionScript» Панель Actions
- •Инструменты работы с кодом
- •Управление проигрыванием. Кнопки Команды управления
- •Скопируйте файл ship.Fla из папки лр1 в свою папку и в дальнейшем работайте только с ним!
- •Реакции на события
- •Метки кадров
- •Адреса: дети, родители и корень
- •Абсолютные адреса
- •Относительные адреса
- •Индивидуальное задание
- •Лабораторная работа №2 «Свойства и события клипа»
- •Свойства
- •Типы объектов
- •Обработчики событий
- •Применение события клипа
- •Присутствие: onClipEvent (load)
- •Отсутствие: onClipEvent (unLoad)
- •Движущая сила: onClipEvent (enterFrame)
- •Перемещение: onClipEvent (mouseMove)
- •Применение методов как обработчиков событий
- •Свойства объектов
- •События клипа
- •События мыши
- •Перетаскивание
- •События клипа
- •Отличие кнопки от клипа
- •Обработка событий мыши и клавиатуры
- •Функции
- •Типы функций
- •Защита паролем
- •Индивидуальное задание
- •Лабораторная работа №3 «Использование объектов среды Flash» Глобальный объект Key
- •Самостоятельное задание
- •Работа с текстом (String, Selection) Объект String — строка
- •Объект Selection
- •Использование объекта Color
- •Массивы Основные понятия
- •Копирование
- •Многомерные массивы
- •Методы для работы с массивами
- •Работа с массивами
- •Дата и время Объект Date
- •Периодический вызов функции
- •Индивидуальное задание
- •Лабораторная работа № 4 «Организация одномерного движения объектов» Математические функции
- •Одномерное движение
- •Движение на плоскости Равномерное движение
- •Неравномерное движение
- •Организация отскока объектов Одномерное движение
- •Индивидуальное задание
- •Лабораторная работа № 5«Организация движения объектов по наклонной плоскости»
- •Векторы
- •Отскок от наклонной плоскости
- •Шарик в кольце
- •Маятник
- •Загрузка символа из библиотеки
- •Определение границ клипа
- •Точка и клип Вторая форма hitTest
- •Трассировка растровых рисунков
- •Точки вдоль границы
- •Сложная фигура и клип Два подхода
- •Цикл по всем дочерних объектов
- •Локальные и глобальные координаты
- •Обработка события для звука
- •Загрузка фильмов
- •Использование Переменных
- •Локальные переменные
- •Типы функций
- •Обработчики событий
- •Описание проекта
- •Загрузка Flash-фильмов
- •Работа с рисунками
- •Увеличение рисунка
- •Маски клипов
- •Звуковые файлы
- •Баннеры
- •Компоненты Обзор
- •Текстовые поля
- •Форматирование
- •Текст-ссылка
- •Работа с базой пользователей
- •Регистрация
- •Радиокнопки
- •Выпадающий список
- •Выключатели
- •Формат компонентов
- •Добавление пользователя
- •Индивидуальное задание
- •Лабораторная работа № 9 «Рисование из программы»
- •Отрезки
- •Заливки Одноцветная заливка
- •Добавление методов к MovieClip
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Цикл по всем дочерних объектов
Для перебора всех «детей» используется специальный вид цикла:
for ( x in объект ) { ... }
Здесь вместо слова объект нужно указать абсолютный или относительный адрес объекта. Например, код
for ( x in _root )
trace( _root[x]._name );
выводит в окно Output имена всех объектов главного монтажного стола (они определяются на панели Properties). Вместо x можно использовать любое другое имя переменной.
Кроме клипов, к объекту могут присоединяться и другие элементы (например, функции). Определить класс объекта можно с помощью оператора typeof.
for ( x in _root ) trace( "Объект " + _root[x] + ", класс: " + typeof _root[x] + ", имя: " + _root[x]._name );
|
Скорее всего, вы увидите на экране что-то такое:
Объект WIN 9,0,45,0, класс: string, имя: undefined
Объект _level0.finish, класс: movieclip, имя: finish
Объект _level0.car, класс: movieclip, имя: car
Объект _level0.stone4, класс: movieclip, имя: stone4
Объект _level0.stone3, класс: movieclip, имя: stone3
Объект _level0.stone2, класс: movieclip, имя: stone2
Объект _level0.stone1, класс: movieclip, имя: stone1
Первая строчка определяет версию Flash-проигрывателя (в виде символьной строки, string). В данном случае используется версия 9.0.45.0 для Windows. Остальные строчки описывают клипы, находящиеся на главном монтажном столе (на уровне 0, отсюда _level0 — здесь это то же самое, что и _root).
Выведите в окно Output информацию о внутренних объектах для камня _root.stone1.
Так как мы не давали имена клипам-точкам, программа сделала это самостоятельно, они называются instance1, instance2 и т.д. Теперь можно написать код, с помощью которого строится массив объектов-точек для каждого камня.
Выделите камень в левом нижнем углу (его имя — stone4) и добавьте к нему код обработчика события load:
onClipEvent (load) {
points = new Array();
for (x in this)
if ( typeof this[x] == "movieclip" &&
this[x]._name.indexOf('instance') >= 0 )
points.push(this[x]);
}
При загрузке клипа создается новый внутренний массив points, в который записываются адреса всех клипов-точек — объектов типа movieclip, в именах которых есть слово instance. Метод push означает «добавить новый элемент в конец массива».
Теперь нужно написать функцию проверки столкновения: она будет возвращать true при столкновении (если хотя бы одна из точек попадает в область клипа car) и false, если столкновения нет. Для этого используется «точечная» форма метода hitTest, как и в предыдущем разделе.
Добавьте к обработчику load для клипа-камня код функции hits:
function hits ( obj ) {
var p = new Object();
for ( i=0; i<points.length; i++) {
p.x = points[i]._x;
p.y = points[i]._y;
this. localToGlobal ( p );
if ( obj.hitTest(p.x, p.y, true) ) {
this.points[i].play();
return true;
}
}
return false;
}