Есть ли способ проверить значение параметра цикла из ActionScript? - PullRequest
0 голосов
/ 24 ноября 2010

Существует ряд параметров, которые можно добавить в теги object и embed для встраивания флэш-видео. Большинство из них перечислены здесь . Некоторые из них могут быть доступны / изменены программно с помощью ActionScript (например, <param name="scale"> можно получить с помощью stage.scaleMode).

Можно ли получить доступ / изменить значение параметра loop?

Изменить, чтобы добавить: Я знаю о flashvars, я не об этом спрашиваю.

Ответы [ 2 ]

4 голосов
/ 28 ноября 2010

Общее общее согласие заключается в том, что нет, вы не можете получить доступ к параметрам, отличным от flashvars / movie, из Flash.

Однако вы можете получить доступ к параметрам, по крайней мере, в некоторых браузерах, из JavaScript - и изКонечно, вы можете взаимодействовать между Flash и JavaScript, используя внешний.

Возможно, подпрограмма javascript в виде:

function getParam(paramName) {
    return $('#flashid param[name=' + paramName + ']').val();
}

Наряду с методом во Flash:

import flash.external.ExternalInterface;

function getParam(paramName:String):String {
    return String(ExternalInterface.call("getParam", paramName));
}

Очевидно, что доступ к сценарию разрешен для SWF и объекта / встраивания.

1 голос
/ 29 ноября 2010

"Можно ли получить доступ / изменить значение параметра loop (с помощью ActionScript)?"
Краткий ответ: Не беспокойтесь.

Длинный ответ:

@ Ответ Орблинга основан на проверке через JavaScript, которая теоретически может находиться в несогласованном состоянии, если параметр был добавлен или удален после добавления встроенного флэш-видео.

Я придумал косвенный способ проверить, были ли установлены параметры воспроизведения или петли. Параметры могут быть обнаружены только при наличии двух или более кадров в корневом видео.

Первый кадр

if (temp.loadParams.playParam)
{
  temp.loadParams.loopParam = true;
  //uses external interface to log to the console (essentially the same as trace)
  temp.say('temp: looped');
  stop();
}

Второй кадр

if (!temp.loadParams.playParam)
{
  temp.loadParams.playParam = true;
  temp.say('temp: played');
}

temp - это имя класса документа, а loadParams - это просто статический объект для хранения состояний параметров. Если для параметра play установлено значение true, видео перейдет к кадру 2, в котором установлено значение playParam. Если для параметра loop установлено значение true, видео возвращается к кадру 1, в котором устанавливается значение loopParam.

Если play имеет значение false, loop все еще может быть обнаружен с использованием какой-то сложной работы с Event.ENTER_FRAME, но на этом этапе нелепо продолжать проверять значения для параметра, который можно просто переопределить с помощью play(); или stop(); в первом или последнем кадре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...