Пример
FS Command: JavaScript
контроль над Flash роликом Чтобы
понять, как это работает,
выполняйте последовательно
приведенные ниже шаги. Также вы
можете скачать zip
файл,
используемый в этом примере.
1)
Вставьте ваш movie в HTML.
Создайте
НTML для вашего ролика,
используя теги OBJECT и EMBED. В
тегах ОBJECT и EMBED , убедитесь
что вы обозначили ваш ролик с
"ID"(для тега OBJECT) и
"NAME" (для тега EMBED). Очень
важно чтобы вы назвали ваш
ролик и чтобы это имя было
идентефицированно для тегов
OBJECT и EMBED поскольку JavaScript
необходимо контролировать
ролик по его имени. Также
помните что необходимо
написать в теге для Netscape(EMBED)
строчку swLiveConnect="true".
HTML-код вашей странички должен
выглядеть приблизительно так,
как указано ниже.
<HTML>
<HEAD>
<TITLE>Моя первая FS
команда</TITLE>
</HEAD>
<BODY>
<OBJECT
CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
WIDTH="100%"
HEIGHT="100%"
CODEBASE="http://active.macromedia.com/flash3/cabs/"
ID=имя_ролика>
<PARAM NAME="MOVIE"
VALUE="ролик.swf">
<PARAM NAME="PLAY"
VALUE="false">
<PARAM NAME="LOOP"
VALUE="false">
<PARAM NAME="QUALITY"
VALUE="high">
<PARAM NAME="SCALE"
VALUE="SHOWALL">
<EMBED
NAME="имя_ролика"
SRC="ролик.swf"
WIDTH="100%"
HEIGHT="100%"
PLAY="false"
LOOP="false"
QUALITY="high"
SCALE="SHOWALL"
swLiveConnect="true"
PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?
P1_Prod_Version=ShockwaveFlash">
</EMBED>
</OBJECT>
</BODY>
</HTML>
2)
Добавьте кросс-броузер функции
(которые понимают популяные
бродилки - NS и MSIE) обращающиеся
к объектам в вашем ролике.
Существуют два важнейших
компонента для того, чтобы
JavaScript мог управлять Flash
роликом:
- функция
вызывающая метод Flash.
- функция
которая возвращает
соответствующий синтакс
для вызыва объектов во Flash
ролике в зависимости от
типа броузера.
В
первой части скрипта вам нужно
просто указать правильный
синтакс ("document[moviename]"
для Netscape и "window[moviename]"
для MSIE). просто поместите это в
каждый ваш скрипт, вызывающий
Flash метод и можете не
беспокоиться по поводу
совместимости. Вот этот код.
<SCRIPT
LANGUAGE="JavaScript">
<!--
var moviename = "имя_ролика";
function
movieobject(moviename)
{
//IE and Netscape refer to the movie object differently.
//This function returns the appropriate syntax depending
on the browser.
if
(navigator.appName.indexOf ("Microsoft") !=-1)
{
return window[moviename]
}
else
{
return document[moviename]
}
}
Значение
"имя_ролика"
должно равняться тому имени
ролика который вы указали в
тегах EMBED и OBJECT.
3)
Добавим функцию вызывающую ваш
Flash метод.
После того как вы разобрались с
проблемой совместимости, будет
гораздо легче вызвать метод
Flash. Вы обращаетесь к объектам
внутри вашего ролика вызывая
"скрипт совместимости"
через имя вашего ролика (moviename)
примерно так:
function
playmovie()
{
movieobject(moviename).Play();
}
Но
подождите. Мы не закончили. Что
случится если вы вызовете method в
ролике который еще не
загрузился? Или даже еще не
начал загружаться? Получится
ошибка. Итак вы должны
проверить:
- что
присутствует
объект,который в ролике.
- что
все загружено и готово к
тому чтобы начать ваш method.
Самое
простое решение проверить
наличие этих двух вещей -
использовать FS Command в вашем Flash
ролике, который начнет
исполнять JavaScript что, в свою
очередь вызовет используемый
вами метод. Таким образом у вас
появляется
"нижнеуровневый" контроль
над временем подключения
вашего метода. Тем не менее вы
можете проверить эти два
условия с JavaScript через
оценивание объектов ролика и
затем вызвать метод "PercentLoaded()".
Итак вот как должна выглядеть
эта функция:
var
movie_ready = "false";
function
playmovie()
{
if(movie_ready == "false")
{
while(movie_ready == "false")
{
if(movieobject(moviename).PercentLoaded() == 100)
{
movieobject(moviename).Play();
movie_ready = "true";
}
}
}
else
{
movieobject(moviename).Play();
}
}
которая
ждет полной загрузки ролика
прежде чем исполнять метод Play.
Помните иницализировав "movie_ready"
переменную изнутри вашего Flash
метода и вызывая такую функцию
как true/false сохраняется
статус вашего ролика так долго,
пока страница в памяти.
4)
Добавьте событие вызывающее
вашу функцию Flash метода.
Теперь чтобы ваша функция
контроля Flash была готова вам
нужно всего лишь вызвать ее.
Для тестовых целей мы
используем кнопку формы чтобы
вызвать нашу функцию Flash :
<FORM>
<INPUT TYPE="BUTTON" VALUE="Play"
ONCLICK="playmovie()">
</FORM>
или
текстовую ссылку (по аналогии
можно вставить .GIF, .JPEG):
<a
href="#"
onClick="playmovie()">Play</a>
Мы научили вас как вызывать
один JavaScript метод--"Play()"--во
Flash ролике. Вы можете
использовать такую же технику
чтобы вызывать любой метод
JavaScript.
Методы доступные во Flash 3.0
плеере перечисленны на Macromedia.
|