FS Command

  • Инcтрументы рисования
  • Motion
  • Shape
  • Выпадающее меню
  • Movie Clip
  • Tell Target
  • Load Movie
  • Полноэкранный ролик
  • Aftershock
  • FS Command
  • Определение 4-ой версии плагина
  • Интерактивное обучение
  • Акции скрипта во Flash4
  • Программирование во Flash4
  • Пошаговое создание фильма во Flash4
  •  
  • Пример 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 роликом:

    1. функция вызывающая метод Flash.
    2. функция которая возвращает соответствующий синтакс для вызыва объектов во 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 в ролике который еще не загрузился? Или даже еще не начал загружаться? Получится ошибка. Итак вы должны проверить:

    1. что присутствует объект,который в ролике.
    2. что все загружено и готово к тому чтобы начать ваш 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.