Как добавить функцию управления во флэш-фильм, созданный из скомпилированных видеоклипов - PullRequest
1 голос
/ 15 октября 2010

Я разработал довольно длинный флэш-фильм, он для рекламы.

Фильм был спроектирован в нескольких файлах флэш-памяти, каждый из которых был объединен в один фрагмент ролика, а затем все фрагменты ролика были перемещены в основной документ.

Каждый видеоклип находится на одном слайде.

Они воспроизводятся, и когда клип подходит к концу, я использовал код действия root.gotoAndPlay(x), где x - номер слайда следующегоклип в последовательности как таковой, моя временная шкала выглядит так:

timeline example

Мне нужно добавить функцию управления четырьмя кнопками:

  • play
  • пауза
  • перемотка
  • быстрая перемотка вперед

Как я могу это сделать?Я могу найти в Интернете только те ресурсы, которые позволяют управлять функциями, в которых все находится на одной временной шкале, а не для управления видеоклипами.

У меня мало опыта в ActionScript, но у меня есть опыт работы с другими языками (JS и PHP).

1 Ответ

1 голос
/ 27 октября 2010

Во-первых, присвойте каждому экземпляру клипа сцены имя экземпляра. Сделайте что-то, что вы можете анализировать, например "clip_1", "clip_2", "clip_3" и т. Д.

Во-вторых, поместите метки кадров в каждый из кадров, где у вас есть клипы сцены, названные так же, как клипы: «scene_1», «scene_2» и т. Д.

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

Мы собираемся создать переменную для хранения ссылки на клип, который воспроизводится в данный момент:

var currentClip:MovieClip = null;

Существует несколько способов отслеживания текущего клипа - все они в какой-то момент утомительны, если вы не запланировали реализацию заранее. Я собираюсь попробовать тот, который, я думаю, будет проще для вас реализовать.

В каждом кадре ваших действий, где находится видеоклип, вы добавите следующую строку кода:

currentClip = eval("clip_x");

Вам нужно будет изменить значение x в «clip_x» в каждом кадре, чтобы оно соответствовало номеру клипа, находящегося в кадре.

Теперь вернитесь ко второму слою действий, который вы создали - здесь мы будем обрабатывать действия rev, ff, play и pause.

function Play() : Void {
   if(currentClip!=null && currentClip!=undefined) {
        currentClip.play();
   }
}

function Pause() : Void {
   if(currentClip!=null && currentClip!=undefined) {
        currentClip.stop();
   }
}

Хорошо, у нас есть игра и пауза. То, как вы будете обрабатывать FF и REV, будет зависеть от того, как вы хотите, чтобы пользователь взаимодействовал с этими кнопками. Обычно есть два подхода: «Прыжок» и «Сканирование». Подход «Jump» перемещает точку воспроизведения вперед / назад на заранее определенное количество кадров при каждом нажатии кнопки. Подход «Сканирование» перемещает точку воспроизведения вперед / назад по X кадрам в секунду, пока кнопка удерживается нажатой, где X - частота кадров вашего фильма.

Я думаю, что подход Jump будет для вас наиболее простым для реализации:

var JUMP_RATE = 30; // это количество кадров, которые нужно «прыгать» каждый раз, когда мы нажимаем кнопки «ff» или «rev»

function FF() : Void {
     if(currentClip!=null && currentClip!=undefined) {
           if(currentClip._currentFrame + JUMP_RATE < currentClip._totalFrames)
                 currentClip.gotoAndPlay(currentClip._currentFrame + JUMP_RATE);
           else
                 currentClip.gotoAndStop(currentClip._totalFrames);
     }
}

function REV() : Void {
     if(currentClip!=null && currentClip!=undefined) {
           if(currentClip._currentFrame - JUMP_RATE > 0)
                 currentClip.gotoAndPlay(currentClip._currentFrame - JUMP_RATE);
           else
                 currentClip.gotoAndPlay(0);
     }
} 

Теперь все, что вам остается сделать, - это создать свои кнопки и добавить вызовы функций к их событиям onPress или onRelease.

Удачи!

...