Иллюстрированный самоучитель по Macromedia Director MX

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

  1. Давайте создадим индивидуальную реакцию на событие для индикатора выполнения.
    • Выберите индикатор выполнения на сцене. Индикатор выполнения отображается в виде красной полосы ниже кнопок управления.
    • Должен быть открыт 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 делится на его длительность, чтобы получить процентное отношение для выполнения видео. Оно затем умножается на ширину первоначального состояния индикатора выполнения, чтобы получить длину полосы. И, наконец, эта длина складывается с позицией левого конца индикатора выполнения, чтобы вычислить позицию правого конца.
  2. Сохраните вашу работу в папке SaveWork на вашем жестком диске.
  3. Щелкните по кнопке Stop на сцене. Щелкните по кнопке Play. Щелкните по кнопке Fast Forward и удерживайте нажатой кнопку мыши. Вы заметите, что звук теперь воспроизводится с удвоенной скоростью. Щелкните по кнопке Fast Backward. Вы заметите, что звук теперь будет воспроизводиться в обратном направлении с удвоенной скоростью.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.