Macromedia Director MX - практическое применение



Практическое упражнение 18.1: Управление цифровым видео



Давайте попробуем использовать Lingo для управления видеофрагментами. В этом упражнении вы будете добавлять органы управления видео, подобные тем, что имеются на видеомагнитофоне. Вы создадите кнопки Play, Stop и быстрой перемотки в обоих направлениях. Вы также создадите индикатор выполнения, показывающий текущую отображаемую позицию в общем видеофрагменте.

Рассмотрим пример

Давайте взглянем на завершенное упражнение.

1. Щелкните по кнопке Rewind. Щелкните по кнопке Play.

2. Обратите внимание на следующие особенности завершенного фильма.


а) При воспроизведении фильма начинается анимация цифрового видео.

б) Отображаются органы управления, подобные органам управления видеомагнитофона, которые управляют воспроизведением видео.

в) Имеется строка состояния, показывающая длительность видео.

г) Строка состояния позволяет пользователю узнавать, на каком месте находится видео по отношению к его общей длительности.

Что должно получиться на экране

На рис. 18.2 показаны органы управления видео, расположенные ниже сцены с цифровым видео в том виде, в каком они будут при завершении упражнения.



Рис. 18.2. Органы управления цифровым видео на завершенной сцене


Что должно получиться за сценой

На рис. 18.3 показана партитура завершенного упражнения.



Рис. 18.3. Окно Score завершенного упражнения


Пошаговые инструкции

Вы познакомились с принципами работы с цифровым видеофайлом и с тем, как должны выглядеть результаты упражнения. Теперь наступило время реализовать ваш проект.

1. Начнем с открытия файла, содержащего нужные нам элементы, следующим образом.


а) Выберите File | New .

2. Выберите File | Save As и поместите ваш новый файл в папку с именем Save Work на вашем жестком диске. Назовите файл MyVideo.dir.

3. Если окно Cast не открыто, то откройте его, выбрав Window | Cast.

4. Если партитура не открыта, то откройте ее, выбрав Window | Score.

5. Мы сейчас определим функции кнопок Play и Stop, используя реакцию на событие кнопки QuickTime из библиотеки реакций на события Director'a.

а) Откройте панель Behavior Library, выбрав Window | Library Palette.

б) В правой части выберите список QuickTime Behaviors, щелкнув по кнопке Library List. Во всплывающем меню Library List, показанном на рис. 18.4, выберите Media, а затем в его меню выберите QuickTime.



Рис. 18.4. Список QuickTime Behaviors во всплывающем меню Library List


в) Щелкните по реакции QuickTime Control Button и перетащите ее из библиотеки на кнопку Play на сцене. Откроется диалоговое окно Parameters. В первом поле (Video Sprite Channel) будет выбран по умолчанию канал 2. Во втором поле (Video Button Action) по умолчанию будет выбрана опция Play. Эта реакция теперь будет добавлена в труппу и может быть использована для инициализации остальных кнопок.

г) Щелкните по кнопке ОК, чтобы закрыть диалоговое окно Parameters.

д) Щелкните по кнопке Stop на сцене, чтобы ее выбрать.

е) Выберите вкладку Behavior в Property Inspector. Щелкните по кнопке Behavior (значок « + ») и в появившемся ниспадающем меню Behavior, показанном на рис. 18.5, выберите опцию реакции QuickTime Control Button.

ж) Теперь откроется диалоговое окно Parameters. В поле Video Sprite Channel должен по умолчанию установиться Sprite Channel 2.

з) Во втором поле (Video Button Action) выберите в ниспадающем меню опцию Stop.

и) Щелкните по кнопке ОК, чтобы закрыть окно Parameters.

6. Давайте создадим индивидуальную реакцию для кнопки Fast Backward (Быстрая Перемотка Назад).

а) Щелкните по кнопке Fast Backward на сцене. Кнопка Fast Backward отображена в виде двух треугольников, указывающих влево.

б) Behavior Inspector должен быть уже открыт. Если нет, то выберите Window | Behavior Inspector.



Рис. 18.5. Ниспадающее меню Behavior


в) Щелкните по кнопке New Behavior (значок « + ») и выберите опцию New Behavior, как показано на рис. 18.6. Откроется диалоговое окно Name Behavior с предложением ввести имя новой реакции на событие.



Рис. 18.6. Кнопка New Behavior и опция New Behavior в меню


г) Напечатайте имя Reverse Behavior и затем щелкните по кнопке ОК.

д) Щелкните по кнопке Script (как показано на рис. 18.7) в окне Behavior Inspector. Теперь откроется окно скрипта реакции.



Рис. 18.7. Кнопка Script


е) Напечатайте в окне Script следующий скрипт.
Property theRate
 on mouseDown me
theRate = sprite(2).movieRate
sprite(2).movieRate = -2
end
on mouseUp me
sprite(2).movieRate = theRate
end

ж) Дважды проверьте правильность того, что вы только что напечатали. Щелкните по кнопке Recompile All Modified Scripts, показанной на рис. 18.8. Щелкните по кнопке X, чтобы закрыть окно.

Подсказка

Если вы сделали опечатку или другую ошибку в вашем коде Lingo, то операция перекомпилирования предупредит вас об ошибке.



Рис. 18.8. Кнопка Recompile All Scripts


з) Далее следует краткое объяснение только что написанного вами скрипта. Свойство theRate будет установлено в текущей скорости movieRate видео в спрайте 2 при нажатии кнопки мыши. Это будет использовано для восстановления в movieRate первоначальной скорости при отпускании кнопки мыши как при воспроизведении видео, так и при его остановке.

С помощью on mouseDown устанавливается свойство theRate. Далее movieRate спрайта 2 (видео) устанавливается в -2. При этом цифровой видеоэлемент будет воспроизводиться назад со скоростью в два раза выше нормальной.

С помощью on mouseUp свойство movieRate спрайта 2 устанавливается обратно в первоначальное значение скорости. Это обеспечит продолжение воспроизведения видео при отпускании кнопки, когда во время воспроизведения будет щелчок по кнопке Fast Backward. Если видео не воспроизводится во время щелчка по кнопке Fast Backward, то оно останется в остановленном состоянии при отпускании кнопки мыши.

7. Создайте индивидуальную реакцию на событие для кнопки Fast Forward следующим образом.

а) Щелкните по кнопке Fast Forward на сцене. Кнопка Fast Forward отображена двумя треугольниками, указывающими вправо.

б) Behavior Inspector должен быть открыт. Если нет, то выберите Window | Behavior Inspector.

в) Щелкните по кнопке Behavior (значок « + ») и затем выберите опцию New Behavior. Откроется диалоговое окно Name Behavior и предложит вам ввести имя для новой реакции.

г) Напечатайте имя Fast Forward Behavior и затем щелкните по кнопке ОК.

д) Щелкните по кнопке Script в окне Behavior Properties. Теперь откроется окно Behavior Script.

е) Напечатайте в окне Behavior Script следующий скрипт. Property theRate
on mouseDown me
theRate = sprite (2) .movieRate
sprite (2) .movieRate = 2
end
on mouseUp me
sprite(2).movieRate = theRate
 end

ж) Дважды проверьте правильность того, что вы только что напечатали. Щелкните по кнопке Recompile All Modified Scripts. Щелкните по X, чтобы закрыть окно.

8. Давайте создадим индивидуальную реакцию на событие для индикатора выполнения.

а) Выберите индикатор выполнения на сцене. Индикатор выполнения отображается в виде красной полосы ниже кнопок управления.

б) Должен быть открыт Behavior Inspector. Если нет, то выберите Window | Behavior Inspector.

в) Щелкните по кнопке Behavior (значок « + ») и выберите затем опцию New Behavior. Откроется диалоговое окно New Behavior и предложит вам ввести имя для новой реакции.

г) Напечатайте имя Indicator Bar Behavior и затем щелкните по кнопке ОК.

д) Щелкните по кнопке Behavior Script в окне Behavior Properties. Теперь откроется окно Behavior Script.

е) Напечатайте в окне Behavior Script следующий скрипт.

Подсказка

Фраза в программе, начинающаяся в скрипте в четвертой строке снизу, обычно пишется в одну строку. Однако поля книги не позволили нам представить этот код одной строкой. Первый слэш (/) в этой строке является математическим действием деления и необходимой частью кода Lingo. Второй слэш (\) является указателем в Lingo, что имеется продолжение в следующей строке. Если вы собираетесь напечатать всю эту фразу в одну строку в окне Behavior Script, то вы должны опустить обратные слэши (\ ). Мы вставили обратные слэши (\) из-за формата книги, но если вы печатаете этот код в точности, как показано здесь, то все в порядке.


property thisSprite , theWidth on BeginSprite me
thisSprite = sprite(me.Spritenum)
theWidth = sprite(thisSprite).width
 sprite(thisSprite).right = \
sprite(thisSprite).left
end
 on prepareFrame me
if sprite(2).movieTime = sprite (2) .duration\
 then
exit
else
sprite(thisSprite).right = \
 (float (Sprite(2) .movieTime)\
 / Sprite(2).duration) \
* theWidth + Sprite(thisSprite).left
end if
end

ж)Щелкните по кнопке Recompile Аll Modified Scripts

з) Далее следует краткое объяснение только что написанного вами скрипта. Он начинается с инициализации двух свойств: thisSprite и theWidth. ThisSprite будет установлено в значение номера спрайта индикатора выполнения. TheWidth будет установлено в значение первоначальной ширины в пикселах спрайта индикатора выполнения. Идея заключается в том, что индикатор выполнения должен продвигаться по мере воспроизведения видео, пока не достигнет конца видео (и своей первоначальной ширины).

on BeginSprite является обработчиком события, который инициализируется, когда Director пытается отобразить спрайт на сцене. Мы используем этот обработчик события, чтобы установить начальную позицию индикатора выполнения.  Здесь устанавливаются свойства thisSprite и theWidth. Правый конец индикатора выполнения затем устанавливается равным левому концу. Таким образом, индикатор выполнения будет виден в неподвижном состоянии.

on prepareFrame является обработчиком события, который инициализируется, когда Director начинает входить в кадр. Он будет проверять, есть ли продвижение в цифровом видеоэлементе. Вначале оператор If...Then проверит, не достигло ли видео конца. Если это так, то программа выходит из оператора If... Then. Если нет, то Director производит вычисления для установки правого конца индикатора выполнения. В этих вычислениях текущее значение видео movieTime делится на его длительность, чтобы получить процентное отношение для выполнения видео. Оно затем умножается на ширину первоначального состояния индикатора выполнения, чтобы получить длину полосы. И, наконец, эта длина складывается с позицией левого конца индикатора выполнения, чтобы вычислить позицию правого конца.

9. Сохраните вашу работу в папке SaveWork на вашем жестком диске.

10.Щелкните по кнопке Stop на сцене. Щелкните по кнопке Play. Щелкните по кнопке Fast Forward и удерживайте нажатой кнопку мыши. Вы заметите, что звук теперь воспроизводится с удвоенной скоростью. Щелкните по кнопке Fast Backward. Вы заметите, что звук теперь будет воспроизводиться в обратном направлении с удвоенной скоростью.


Книжный магазин