Главная / Лекции / Интернет-программирование

Содержание данной главы
Модуль 2. Flash

2.1. Характеристики Flash.
  1. Flash в равной степени пригоден для представления интерактивного содержимого как в Web, так и вне этой среды.
  2. Анимация воспроизводится значительно быстрее, чем альтернативный вид анимации файлов формата gif (т.к. используется векторная графика).
  3. Независимость от размера изображения (имеется команда, определяющая размер, до которого следует изменить масштаб графики).
  4. Качественное изображение и текст.
  5. Простота использования.
  6. Практическое отсутствие препятствий для применения подключаемых модулей (с 1998г. Flash включена в браузеры).
Во Flash используются 3 основных вида анимации:
  1. Покадровая
  2. Заполняемая промежутками
  3. Стоп-кадровая
Покадровая анимация.
Для осуществления покадровой анимации требуется, чтобы каждый кадр был ключевым, т.е. таким кадром, в котором имеются какие-то изменения, по сравнению с предыдущим кадром, причем эти изменения выпадают на долю аниматора, а не компьютера. Примером покадровой анимации может служить схематически нарисованная идущая фигура. Ключевые кадры на временной диаграмме помечаются маленькими закрашенными кружочками если кадры содержат графику, и пустыми, если графики в них нет.

Заполнение промежутков.
Под заполнением промежутков подразумевается рисование промежуточных кадров, представляющих начальное и конечное положение движения. Причем промежуточные кадры заполняются обычно помощником аниматора, т.е. программным обеспечением, которое осуществляет анимацию конкретного процесса. Все приведенные ниже эффекты, за исключением морфинга, могут быть введены в одну и ту же последовательность промежутков.
  1. Движение. В этом случае рисунок может быть перемещен из одного положения в первом ключевом кадре в другое положение в последнем кадре. При этом рисунок перемещается по прямой линии.
  2. Движение по заданной траектории. В этом случае промежуточное движение может придерживаться линии или кривой в направляющем слое.
  3. Масштабирование. В этом случае можно растянуть или иным образом изменить размер рисунка (или его части) между ключевыми кадрами.
  4. Вращение и искажение. В этом случае можно воспользоваться командой Modify->Transform->Rotate, либо командой Scale And Rotate, если предпочтение отдается вводу числовых значений.
  5. Морфинг. В этом случае форму изначального ключевого кадра можно использовать для постепенного его превращения в соответствующую форму в конечном кадре.
    Во Flash предоставляются т.н. указания формы, которые позволяют управлять порядком расположения точек в формах для равномерного их смешения. Для выполнения морфинга следует дважды щелкнуть на первом кадре, чтобы вызвать перемещаемую панель Frame, щелкнуть по раскрывающемуся списку Tweening (кадрирование) и выбрать из этого списка элемент Shape.
  6. Смешение цвета. В этом случае можно начать с одного цвета и закончить другим, а в промежуточных кадрах произойдет последовательные смешение начального и конечного оттенков. Смешение цвета пригодно только для символов; подлежит управлению с помощью перемещаемой панели Effect, вызываемый с помощью команды Window->Pallets-> Effect и не редко называется заполнением промежутков цветом.
  7. Просветление. В этом случае для символа можно назначить один уровень прозрачности (альфа канал) в начальном кадре, а другой уровень - в конечном кадре. Просветления можно также добиться, указав разные уровни яркости в начальном и конечном кадрах, а в промежуточных кадрах будет происходить плавный переход между этими уровнями. Управление просветлением осуществляется также с помощью перемещаемой панели Effect.
Последовательность стоп-кадров.
Понятия стоп-кадр и последовательность могут показаться совершенно несовместимыми, однако единственный способ продлить существование одного кадра во Flash состоит в его копировании в целый ряд последовательных кадров. Таким образом, всякий раз, когда требуется, чтобы объект или сцена просто пребывали в бездействии, необходимо создать последовательность стоп-кадров (still frame sequence).
Последовательность стоп-кадров состоит из двух компонентов, которые способны отражать тоже самое изображение, что и в родительском кадре: ключевой кадр с изображением и следующие за ним пустые кадры. Одним из наиболее распространенных примеров применения последовательностей стоп-кадров являются различные виды фона.

2.2. Символы и библиотеки.

Кнопки.
Символы кнопок являются фильмами, которые состоят из 4-х кадров, и в которых воспроизведение каждого кадра зависит от состояния кнопки мыши:
  1. 1-й кадр Up описывает состояние кнопки, которое соответствует отпущенной кнопке мыши и отсутствию курсора над данной кнопкой.
  2. 2-й кадр Over описывает состояние кнопки, которое соответствует расположению курсора мыши над данной кнопкой без нажатия на нее.
  3. 3-й кадр Down описывает состояние кнопки, которое соответствует щелчку на данной кнопке (ее нажатие).
  4. 4-й кадр Hit описывает обычное состояние кнопки и определяет форму области, где могут происходить другие события от мыши.
Кнопку можно создать двумя способами:
  1. Нарисовать изображение, выделить его и нажать клавишу F8.
  2. На чистой сцене нажать сочетание клавиш Ctrl + F8 и выбрать в диалоговом окне Button.
Кнопки во Flash обладают обширным списком событий, на которые мы можем реагировать:
  1. Press - клавиша мышки нажата, когда курсор находится в пределах кнопки.
  2. Release - клавиша мышки отжата, когда курсор находится в пределах кнопки.
  3. Release Outside - клавиша мышки отжата, когда курсор находится вне пределов кнопки.
  4. RollOver - курсор мыши входит в пределы кнопки.
  5. RollOut - курсор выходит за пределы кнопки.
  6. DragOver - курсор входит в пределы кнопки, при этом была нажата кнопка и нажата клавиша мыши.
  7. DragOut - курсор выходит за пределы кнопки, при этом была нажата кнопка и нажата клавиша мыши.
  8. KeyPress ("клавиша") - была нажата клавиша. Список клавиш можно посмотреть по справке во Flash (объект key) или использовать панель параметров для ввода нужной клавиши.

    Пример 1:
    KeyPress ("Key.BackSpace")


    Перехватываются эти события с помощью директивы on(событие)

    Пример 2:
    {
    …действия
    }


    Пример 3:
    on(release)
    {
    getURL("http://www.ya.ru")
    }
2.3. Клипы (Movie Clip).

Свойства клипов:
  1. _x, _y - координаты клипа в пикселях
  2. _xscale, _yscale - масштаб клипа в % по горизонтали и по вертикали
  3. _width, _height - ширина и высота клипа в пикселях
  4. _rotation - угол поворота клипа в градусах
  5. _alpha - прозрачность клипа в %
  6. _visible - видимость клипа
Функции клипов:
  1. play() - начинает или возобновляет воспроизведение клипа
  2. stop() - останавливает воспроизведение клипа
  3. gotoAndPlay() - переходит на определенный кадр (сцену) и продолжает воспроизведение
  4. gotoAndStop() - переходит на определенный кадр (сцену) и останавливает воспроизведение
  5. number() - перевод строки в новое число
  6. nextframe() - переход на следующий кадр
  7. nextscene() - переход на следующую сцену
  8. prevframe() - переход на предыдущий кадр
  9. prevscene() - переход на предыдущую сцену
Основные события клипа:
Основное событие клипа - onClipEvent позволяет задать сценарий обработки событий для выделенного клипа. Допускает использование 9 различных событий:
  1. onClipEvent(load) {…} - загрузка основного фильма
  2. onClipEvent(EnterFrame) {…} - собыите наступает по началу определенного кадра
  3. unload - выгрузка определенного клипа
  4. mousedown - событие наступает по нажатию клавиши мыши
  5. mouseup - событие наступает когда клавиша мыши отпускается
  6. mouseup - событие возникает при перемещении мыши с каким-то объектом
  7. keydown - событие возникает при нажатии клавиши
  8. keyup - событие возникает при отпускании клавиши
  9. data - событие от таймера
Имена клипов.
Имя объекта - это имя конкретного экземпляра символа. Например, может быть символ "машина", а экземпляры этого символа будут называться "пикап", "джип". Для того, чтобы дать имя объекту, нужно выделить объект и в панели Instance, в графе name ввести имя объекта (имя не может начинаться с цифры).

2.4. Пути до объекта.

Путь до объекта - это запись имени объекта с учетом иерархии. Во Flash объекты можно вкладывать друг в друга, составляя т.н. иерархию. Вложенность объектов обеспечивает не только удобство в обращении с ними, она еще и ограничивает видимость ее объектов. Видимость ограничивается своим уровнем. Объект может напрямую по имени обращаться только к объектам, входящим в него или стоящим на один уровень ниже в иерархии. Для того, чтобы обратиться к объекту другого уровня нужно знать путь до него, причем путь может указываться как абсолютно (с самого верхнего уровня иерархии), так и относительно (с текущего уровня). Путь включает в себя объекты, через которые нужно пройти по дереву иерархии, чтобы добраться до нужного нам объекта, перечисленные через точку. Кроме того существует несколько указателей т.н. виртуальных объектов.
  1. this - указатель на самого себя (т.е. на текущий объект). Бывает нужен, например, когда нужно передать в функцию указатель на объект, из которого эта функция вызывается.
  2. parent - указатель на родителя. Указывает на объект, стоящий уровнем выше в иерархии.
  3. root - начало иерархии (корень). Используется при указании абсолютного пути.
Пример:
leaf.play()
- у подобъекта лист (leaf) вызывается функция play
_parent.tree.leaf.stop() - на одном уровне имеется объект дерево (tree), у которого есть объект лист (leaf), у которого вызывается функция stop.
_root.banner._visible=false - сделать клип banner, находящийся на первом уровне, невидимым

Для иллюстрации возьмем иерархию из 5 объектов. Объекты 1-4 находятся на первом слое. Объект 5 - на втором. Объект 2 вложен в объект 1, а объект 3 вложен в объект 2. Пусть объекты имеют имена obj1-obj5. Первому объекту нужно, чтобы объект 3 начал заново воспроизводиться с первого кадра.

obj2.obj3.gotoAndPlay(1);

Чтобы 4 объекту сделать первый объект со всеми подобъектами полупрозрачным:

_parent.obj1._alpha=50;
_root.obj1._alpha=50;


Т.к. obj4 находится на 1 уровне иерархии, то для него _root и _parent - одно и то же.
Теперь для объекта 3 напишем скрипт, который сделает объект 5 невидимым при нажатии клавиши мыши. Сценарий для объекта 3:

onClipEvent(mouseDown)
{
_root.obj5._visible=false;
}


2.5. Управление звуком во Flash.

Частота дискретизации звука.

Частота Качество
44,1 КГц Компакт-диск
22,05 КГц Радио FM диапазона, широко используется в Web
11,025 КГц Самое низкое качество для коротких музыкальных фрагментов, высокое качество речи
5 КГц Низкое качество воспроизведения речи

Точность дискретизации или битовая глубина определяет сколько разных градаций или дискретных уровней амплитуд применяется при выполнении дискретизации звука. Это понятие аналогично битовой глубине растровых изображений. Чем больше битовая глубина, тем больше данных хранится в каждом колебательном сигнале.
Битовая глубина звука:

Битовая глубина Частота дискретизации Качество
16 65536 Компакт-диск
12 4096 Среднее, близкое к качеству компакт-диска
8 256 Радио FM диапазона
4 16 Самое низкое, допустимое для воспроизведения звука

Создание звуковых объектов.
Чтобы производить какие-либо операции со звуком, необходимо создать объект типа Sound.
Существует стандартная конструкция:

soundObject = new Sound (target);

где soundObject - имя создаваемого звукового объекта, а target - необязательный параметр, указывающий объект типа Movie Clip или уровень.

Пример:
movieSound=new Sound ("some Clip");
movieSound=new Sound ("_root.teddy.mouth");
levelSound=new Sound ("_level1");


Если планируется использовать объект в любом месте вашего клипа, то он создается без параметров.

globalSound = new Sound();

Привязка звука к объектам sound.
Объект sound позволяет воспроизводить звуки, не вставленные непосредственно в ключевой кадр временной шкалы, но для этого их надо сначала поместить в библиотеку, а затем экспортировать для использования в ActionScript.
Для помещения звуков в библиотеку надо выбрать File->ImportToLibrary.
Теперь, когда файл уже находится в библиотеке, выделяем его, нажимаем правую кнопку мыши на названии звука и в появившемся контекстном меню выбираем Linkage Properties. В этом окне в поле Identifier (идентификатор) вводим имя звукового ресурса. В этом диалоговом окне есть флажок Export In First Frame (экспортировать в первый кадр), который не желательно помечать.
Чтобы привязать звуковой ресурс к звуковому объекту, нужно воспользоваться функцией attachSound(idName), в которой параметр idName указывает идентификатор звукового ресурса.

Пример:
mySound = new Sound();
mySound.attachSound ("tada");


Воспроизведение и остановка звуков.
Основными действиями, выполняемыми со звуковыми объектами является воспроизведение и остановка воспроизведения. Для того, чтобы воспроизвести звук, используется функция start(offset, loops) объекта sound. Параметр offset указывает смещение в секундах от начала звукового фрагмента, а loops - количество повторений проигрываемого фрагмента.

Пример: если мы хотим проиграть вторую половину 20 секундного фрагмента 3 раза, необходимо записать:
someSoundObject.play(20,3);


Оба параметра функции start являются необязательными. По умолчанию звук проигрывается с самого начала 1 раз.

someSoundObject.play();

Чтобы остановить проигрывание используется функция stop(idName). Вызванная без параметров она останавливает все звуки. Указав параметр idName, обозначающий идентификатор звука, можно остановить только один специфический звук.

globalSnd.stop();
someSnd.stop("tada");


Динамическое изменение параметров звука.
Объект sound позволяет динамически устанавливать уровень громкости и баланс панорамирования звука. Существуют также функции для получения значения баланса и громкости. Для установки громкости звука используется функция setVolume(value). Параметр value может принимать значения от 0 (минимальный уровень) до 100 (максимальный уровень). По умолчанию уровень громкости равен 100. Для установки баланса используется функция setPan(value). Здесь параметр value может принимать значения от -100 (весь звук в левом канале) до 100 (весь звук в правом канале). Значение 0 (по умолчанию) означает, что звук равномерно распрделен между обоими каналами.

Пример:
globalSnd.setVolume(50);
globalSnd.setPan(70);


Можно использовать функции getVolume() и getPan() для получения текущего значения громкости и баланса соответственно.

Пример:
currentVolume = SomeSnd.getVolume()
currentPan = SomeSnd.getPan()


Динамическая загрузка внешних mp3 файлов.
Во Flash MX появилась возможность загрузки внешних файлов. Для этого используется функция loadSound(url, stream). Первый параметр url указывает путь к файлу; второй stream является логической переменной, определяющей потоковый режим загрузки звукового файла. Если значение stream=false, то Flash дождется полной загрузки файла, прежде чем его воспроизводить. Если же stream=true, то файл может воспроизводиться в потоковом режиме, не загрузившись полностью. Данный режим рекомендуется использовать только на быстрых каналах связи или при использовании на локальной машине.

Пример:
snd = new Sound();
snd.loadSound("http://someserver.com/file.mp3", false)


Метод Sound.setTransform
Для вызова метода setTransform требуется указать объект класса object, который должен быть связан с 4-мя параметрами работы кнопок. После создания объекта класса object следует создать объект sound, который будет обрабатывать эти значения с помощью метода setTransform. Четыре параметра, о которых идет речь определяют уровень входного сигнала в %. Значения всех параметров находятся в диапазоне от -100 до 100.
  1. LL - уровень воспроизведения в левой колонке сигнала, поступающего с левого входа, выраженный в %.
  2. LR - уровень воспроизведения в левой колонке сигнала, поступающего с правого входа, выраженный в %.
  3. RR - уровень воспроизведения в правой колонке сигнала, поступающего с правого входа, выраженный в %.
  4. RL - уровень воспроизведения в правой колонке сигнала, поступающего с левого входа, выраженный в %.

По умолчанию для стереозвука установлены значения 100 для параметров LL и RR и 0 для LR и RL.
Задавая другие комбинации можно получать довольно интересные эффекты.

Пример:
AlphaTransform = new Object();
AlphaTransform.LL = 100;
AlphaTransform.LR = 0;
AlphaTransform.RR = 100;
AlphaTransform.RL = 0;
AlphaSound = new Sound();
AlphaSound.setTransform(AlphaTransform);


2.6. Нововведения во Flash MX.
  1. Поддержка видео
  2. Компоненты пользовательского интерфейса
  3. Программируемое рисование
  4. Маски по сценарию
  5. Папки слоев
  6. Использование шаблонов
  1. В 5 Flash не было настоящей поддержки видео. Его можно было только импортировать как серию статических изображений или экспортировать в QuickTime. Версия MX полностью поддерживает внедренное видео, позволяя работать без необходимости обращения к внешним плеерам. Видео можно импортировать из нескольких форматов, и, с помощью кодека Sorenson Spark, внедрять непосредственно в SWF-файлы. Импортированным видео можно управлять (вращать, масштабировать, наклонять, маскировать и анимировать). Им можно управлять и с помощью ActionScript. Кодек Sorenson Spark обеспечивает существенное сжатие больших видеофайлов. Для импортирования видео выполните команду FileImport и выберите нужный видеофайл.
  2. Панель Components представляет собой библиотеку наиболее распространенных элементов интерфейса.
    • PushButton - простая кнопка с предварительно заданными состояниями.
    • CheckBox - флаговое поле
    • RadioButton - переключатель
    • ComboBox - комбинированный, управляющий список
    • ListBox - окно списка
    • ScrollBar - полоса прокрутки
    • ScrollPane - панель прокрутки - прокручивающаяся область окна, добавляющая вертикальную и горизонтальную полосы прокрутки для отображения видеоклипов. Добавить к фильму нужный элемент можно простым перетаскиванием нужного компонента на сцену.
  3. Новый, прикладной программный интерфейс рисования открывает новые возможности рисования изображений в объекте видеоклипа. Посредством ActionScript новые видеоклипы можно создавать с нуля без привлечения графических средств.
    Методы прикладного программного интерфейса рисования:
    • beginFill - если есть разомкнутая траектория, замыкают ее с помощью линии и применяют заливку к замкнутой области. Заливка последующих замкнутых траекторий не выполняется.
      myClip.beginFill()
    • beginGradientFill - тоже самое, что beginFill, только заливка - градиентная.
      myClip.beginGradientFill()
    • clear - удаляет из клипа все созданные программным образом рисунки и отменяет текущий стиль линии и заливку
    • curveTo - рисует кривую, используя текущее положение пера, координаты анкерных и контрольных точек.
      myClip(controlX, controlY, anchorX, anchorY)
    • lineStyle
      myClip.lineStyle() - прекращает рисование линии
      myClip.lineStyle(6) - рисует сплошные черные линии, толщиной 6 пкс
      myClip.lineStyle(5, 0x00FF00) - рисует сплошные зеленые линии, толщиной 5 пкс
    • lineTo
      myClip.lineTo(100,50). Рисует линию текущего стиля. Начинает рисование с текущего положения пера и заканчивает в точке, расположенной на расстоянии 100 пкс вправо и 50 пкс вниз относительно точки регистрации клипа.
    • moveTo
      myClip.moveTo(200,250). Устанавливает текущее положение пера в точке, расположенной на расстоянии 200 пкс вправо 250 пкс вниз относительно точки регистрации клипа.
  4. Новым во Flash MX является метод setMask() класса Movie Clip, позволяющий программным образом назначить один видеоклип маской другого.

    Пример:
    myMaskedClip.setMask(myMask);


    где myMaskedClip является именем экземпляра видеоклипа, подлежащего маскированию, а myMask - именем экземпляра видеоклипа, являющегося маской.


    назад     содержание     на главную


Rambler's Top100
Hosted by uCoz