- •Основы языка 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
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Работа с рисунками
В нашем аквариуме будут три объекта: акула, медуза и морской конек.
info = new Array (["Акула", "image0.jpg"], ["Медуза", "image1.jpg"], ["Конек", "image2.jpg"]); MAX = info.length; i = random(MAX); newSlide ( i );
|
Информация об объектах записывается в массив info. Это особый массив, каждый элемент которого сам является массивом. То есть, можно было написать и так:
info = new Array();
info[0] = ["Акула", "image0.jpg"];
info[1] = ["Медуза", "image1.jpg"];
info[2] = ["Конек", "image2.jpg"];
Для объекта с номером i название находится в элементе info[i][0], а имя файла-рисунка — в info[i][1].
В переменную MAX записывается длина массива (количество объектов). Далее находим случайный номер объекта и вызываем функцию newSlide, которая выводит нужную информацию на экран:
название info[i][0] записывается в динамическое текстовое поле с именем name;
фотография (имя файла находится в info[i][1]) загружается в пустой клип picture, расположенный в левом верхнем углу области просмотра.
Фотографии имеют размер в два раза больше, чем нужно (по каждой стороне). Это сделано специально, чтобы можно было увеличить их щелчком мыши и увидеть детали. Поэтому перед загрузкой нужно установить для клипа масштаб 50 процентов.
Добавьте функции к коду кадра 1:
function newSlide ( no ) {
if ( no < 1 ) no = MAX;
if ( no > MAX ) no = 1;
slideNo = no;
name.text = info[no-1][0];
nitPicture();
loadMovie ( info[no-1][1], "picture" );
}
function initPicture() {
with ( picture ) {
_xscale = 50;
_yscale = 50;
}
}
В начале функции newSlide выполняется обработка неправильно заданного номера слайда, исправленный номер сохраняется в переменной slideNo. Затем в текстовое поле name выводится название животного, с помощью функции initPicture для клипа устанавливается масштаб 50% и в этот клип загружается рисунок с диска.
Поскольку в функции newSlide сделана защита от неправильно заданного номера, легко написать обработчики для кнопок-стрелок (переход к предыдущему и следующему объекту).
Добавьте код для кнопки-стрелки «влево»:
on ( release ){
newSlide ( slideNo - 1 );
}
и аналогично для стрелки «вправо». Проверьте работу кнопок.
Увеличение рисунка
Дальше мы сделаем, чтобы при щелчке мышкой рисунок увеличивался в два раза и перетаскивался мышкой. Для того, чтобы вернуть его на место, предварительно надо запомнить начальные координаты x0 и y0. Самое подходящее место для этого — обработчик события load.
При щелчке мышкой (событие mouseDown) проверяем, попадает ли точка щелчка на рисунок. Для этого применяем метод hitTest. Если попадает, то увеличиваем масштаб рисунка до 100% (полный размер) и начинаем перетаскивание.
При отпускании мыши (событие mouseUp) надо закончить перетаскивание, вернуть рисунок на прежнее место (в точку с координатами (x0,y0)) и установить масштаб 50%. Мы добавим эти возможности к функции initPicture. Так сделано специально, поскольку эта функция вызывается при загрузке нового слайда и все будет правильно работать даже тогда, когда происходит автоматическая смена слайда во время перетаскивания.
Выделите пустой клип с именем picture (он изображается кружком в левом верхнем углу области рисунка) и добавьте к нему обработчики
onClipEvent ( load ) {
x0 = _x;
y0 = _y;
}
onClipEvent (mouseDown) {
if ( ! hitTest(_root._xmouse, _root._ymouse) ) return;
_xscale = 100;
_yscale = 100;
startDrag (this);
}
onClipEvent (mouseUp) {
_root.initPicture();
}
Измените код функции initPicture (код, связанный с кадром 1).
function initPicture() {
stopDrag();
with ( picture ) {
_xscale = 50;
_yscale = 50;
_x = x0;
_y = y0;
}
}
Проверьте работу клипа в режиме увеличения рисунка.
Если вы сделали все правильно, фотография действительно увеличивается, но «вылезает» из области, отведенной рисунку, закрывает другие элементы. Чтобы ограничить область видимости, мы используем маску.
