- •Основы языка 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
- •Градиентная заливка
- •Квадраты
- •Двойной щелчок
- •Текстовое поле
Градиентная заливка
Для создания градиентной заливки надо описать в виде массивов все используемые цвета (массив colors), их непрозрачность (массив alpha) и положение движков на панели Colors (массив pos), соответствующее этой заливке:
Таким образом, массивы можно задать так:
color = [0xFF,0xCC00];
alpha = [100, 100];
pos = [0, 255];
Оба цвета полностью непрозрачны, движки находятся на концах линейки, имеющей деления от 0 до 255.
Кроме того, для построения градиента нужна матрица специального типа, которая задает размер и положение прямоугольника, ограничивающего область градиента, а также его поворот. Пусть границы нашей градиентной заливки совпадают с границами квадрата, а угол поворота равен 45°. В этом случае матрица задается так:
matrix = { matrixType:"box", x:0, y:0, w:150, h:150,
r:45*Math.PI/180 };
Объект matrix имеет 6 полей (свойств):
matrixType — всегда равно "box";
x и y — координаты левого верхнего угла прямоугольника, ограничивающего область градиента;
w и h — ширина этого прямоугольника;
r — угол поворота градиента в радианах.
Когда все эти данных готовы, можно вызывать функцию beginGradientFill:
beginGradientFill("linear", color, alpha, pos, matrix);
Первый параметр определяет тип градиента:
"linear" — линейный;
"radial" — радиальный.
color = [0xFF,0xCC00]; alpha = [100, 100]; pos = [0, 255]; matrix = { matrixType:"box", x:0, y:0, w:150, h:150, r:45*Math.PI/180 }; beginGradientFill ("linear", color, alpha, pos, matrix); а после него: endFill(); |
Теперь создадим второй квадрат и используем для него радиальную заливку из трех цветов:
красный, код 0xFF0000, непрозрачный (alpha=100);
желтый, код 0xFFFF00, параметр alpha=75;
синий, код 0xFF, полупрозрачный (alpha=50).
Желтый движок расположим в середине линейки, поэтому его позиция равна 127.
Добавьте в конец программы код
createEmptyMovieClip ("sq2", 2);
with ( sq2 ) {
_x = 190;
_y = 200;
color = [0xFF0000, 0xFFFF00, 0xFF];
alpha = [100, 75, 50];
pos = [0, 127, 255];
matrix = { matrixType:"box", x:0, y:0, w:150, h:150, r:0 };
}
Мы задали все характеристики градиента, но не нарисовали сам квадрат. Поскольку нужно сделать так, чтобы квадрат вращался, и градиент перемещается при вращении, мы будем рисовать в обработчике enterFrame. Перед рисованием нужно очистить поле, вызвав метод clear.
При переходе к следующему кадру угол поворота квадрата относительно точки (0,0) будет увеличивается на 1°. Кроме того, координаты левого верхнего угла градиента также будут смещаться по закону
matrix.x = _rotation / 2;
matrix.y = _rotation / 2;
Добавьте в конец программы код обработчика
sq2.onEnterFrame = function() {
with ( this ) {
clear();
_rotation += 1;
matrix.x = _rotation / 2;
matrix.y = _rotation / 2;
beginGradientFill("radial", color, alpha, pos, matrix);
rectangle(0, 0, 150, 150);
endFill();
}
}
Проверьте работу фильма ЛР9_1.fla.
Кривые
Для рисования кривых из текущей активной точки вместо lineTo используется метод curveTo ( x2, y2, x3, y3);
Здесь (x2,y2) — координаты второй точки, в которую уходит касательная из активной точки, а (x3,y3) — координаты третьей точки, в которую фактически приходит линия. Эту ситуацию иллюстрирует рисунок ниже (все точки можно перетаскивать мышью).
С помощью таких команд можно строить овалы и окружности. Если нарисовать овал с помощью инструмента и выделить ее инструментом (Subselection), вы увидите, что фигура строится с помощью 8 узловых точек. Не вдаваясь в утомительные вычисления, запишем добавим к прототипу MovieClp ее два метода: oval (овал) и circle (окружность).
Добавьте в конец файла figures.as код двух методов:
MovieClip.prototype.circle = function (x, y, r) {
this.oval ( x, y, r, r );
}
MovieClip.prototype.oval = function (x, y, w, h) {
with ( this ) {
moveTo ( x+w, y );
curveTo ( x+w, y+0.4142*h, x+0.7071*w, y+0.7071*h );
curveTo ( x+0.4142*w, y+h, x, y+h);
curveTo ( x-0.4142*w, y+h, x-0.7071*w, y+0.7071*h );
curveTo ( x-w, y+0.4142*h, x-w, y );
curveTo ( x-w, y-0.4142*h, x-0.7071*w, y-0.7071*h );
curveTo ( x-0.4142*w, y-h, x, y-h );
curveTo ( x+0.4142*w, y-h, x+0.7071*w, y-0.7071*h );
curveTo ( x+w, y-0.4142*h, x+w, y );
}
}
В функции oval параметры x и y обозначают координаты центра, а w и h — длины полуосей (половина ширины и половина высоты).
В функции circle три параметра: координаты центра окружности и ее радиус.
Результат следующего упражнения показан на рисунке ниже. Щелкнув по кнопке, вы можете отправить шарик в «зеленую дыру», такой же эффект дает двойной щелчок по шарику. После этого на его месте появляется следующий шарик, его номер увеличивается. Шарик можно перетаскивать мышкой.
