Введение

При загрузке в интернет-браузере параметр FlashVars тега HTML <OBJECT> отправляет переменные в SWF-файл верхнего уровня. Тег <OBJECT> используется для добавления SWF-файлов к HTML-страницам. Также может использоваться тег <EMBED>, однако этот вариант старше и сейчас устарел.

Для получения сведений об основах использования тега <OBJECT> см. раздел Синтаксис тега OBJECT.

Примечание. Для использования функции FlashVars требуется Flash Player 6 или более поздней версии.

Используйте FlashVars для передачи значений в SWF-файл

Можно использовать дополнительный параметр с именем «FlashVars» для передачи переменных на корневой уровень SWF-файла. Этот параметр необходимо поместить внутри тега <OBJECT> или более старого тега <EMBED>.Затем все эти переменные передаются в SWF-файл до начала воспроизведения первого кадра файла.

Можно передать любое количество переменных с любыми необходимыми именами переменных.Все браузеры поддерживают строки FlashVars длиной до 64 кб (65 535 байт).

Форматом свойства FlashVars является строка, представляющая собой набор пар имен и значений name=value, которые разделены символом «&».

Можно включить специальные или непечатаемые символы, если использовать символ «%», за которым следует соответствующее двузначное шестнадцатеричное значение. Единичный пробел может выражаться знаком «+».Для получения дополнительных сведений о специальных символах для кодирования URL см. раздел Кодирование URL (Википедия).

В следующем примере код HTML передает две переменные. Первая называется «myVariable» и имеет значение «Hello World». Вторая называется «mySecondVariable» и имеет значение «Goodbye».

Пример тега Object

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="myFlashMovie" align="middle">
    <param name="movie" value="myFlashMovie.swf" />
    <param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye" />
    <!--[if !IE]>-->
    <object type="application/x-shockwave-flash" data="myFlashMovie.swf" width="550" height="400">
        <param name="movie" value="myFlashMovie.swf" />
        <param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye" />
    <!--<![endif]-->
        <a href="http://www.adobe.com/go/getflash">
            <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
        </a>
    <!--[if !IE]>-->
    </object>
    <!--<![endif]-->
</object>

 

Пример тега Embed

Тег <EMBED> также может использоваться для добавления SWF-файла к веб-странице, но он тоже использовался ранее и сейчас устарел.

<embed src="myFlashMovie.swf" 
    quality="high" 
    bgcolor="#ffffff" 
    width="550" 
    height="400" 
    name="myFlashMovie"     FlashVars="myVariable=Hello%20World&mySecondVariable=Goodbye"
    align="middle" 
    allowScriptAccess="sameDomain" 
    allowFullScreen="false" 
    type="application/x-shockwave-flash" 
    pluginspage="http://www.adobe.com/go/getflash" 
/>

Браузер зашифровывает строку FlashVars так же, как он кодирует остальную часть HTML-страницы. Internet Explorer в операционной системе Windows поддерживает кодировку UTF-16. Другие браузеры поддерживают кодировку UTF-8.

Доступ к переменным в коде ActionScript 3.0 в SWF-файле

После передачи переменных в SWF-файл из HTML SWF-файл требует использования этих переменных.

Для доступа к переменным FlashVars используйте объект LoaderInfo в ActionScript 3.0.

Простой пример

В представленном ниже примере кода объект LoaderInfo запрашивает доступ к переменной с именем «myVariable», которая передана в SWF-файл в рамках параметра FlashVars. Затем он задает текст текстового поля в рабочей области для строкового значения переменной.

// by querying the LoaderInfo object, set the value of paramObj to the 
// to the value of the variable named myVariable passed from FlashVArs in the HTML
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters.myVariable;

// set the text of the text instance named text1. Use the toString() method
// to convert the value from an object to a string so it can be used in the text field
text1.text = paramObj.toString()

Вы можете загрузить примеры файлов FLA, SWF и HTML, демонстрирующие использование представленного выше кода.

Сложный пример

Приведенный ниже пример кода выполняет следующее:

  • Создает экземпляр TextField в рабочей области (с именем tf).
  • Использует объект LoaderInfo для извлечения переменных из параметра FlashVars.
  • Использует для...в цикле для итерации по каждой из переданных переменных.
  • Отображает имена и значения переменных в текстовом поле.
// AS3
var tf:TextField = new TextField();       // create a TextField names tf
tf.autoSize = TextFieldAutoSize.LEFT;
tf.border = true;
addChild(tf);                             // add the TextField to the DisplayList so that it appears on the Stage

tf.appendText("params:" + "\n");
try 
{
    var keyStr:String;
    var valueStr:String;
    var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;   //set the paramObj variable to the parameters property of the LoaderInfo object
    for (keyStr in paramObj) 
    {
        valueStr = String(paramObj[keyStr]);
        tf.appendText("\t" + keyStr + ":\t" + valueStr + "\n");  // add each variable name and value to the TextField named tf
    }
} 

catch (error:Error) 
{
    tf.appendText(error.toString());
}

Доступ к переменным в SWF-файле в коде ActionScript 2.0

В ActionScript 2.0 вы можете получить прямой доступ к переменным FlashVars так, как если бы они были заявлены непосредственно в SWF-файле.

В данном примере задается свойство экземпляра динамического текста с именем text1 в качестве значения переменной под названием myVariable.myVariable заявляется в параметре FlashVars.

// AS2
text1.text = myVariable;

Вы можете загрузить примеры файлов FLA, SWF и HTML, демонстрирующие использование представленного выше кода AS2.

Дополнительные методы

Переменные можно передавать в SWF-файлы путем присоединения их к URL SWF-файлов, указанных в тегах OBJECT и EMBED. В рамках этого метода дополнительные данные, присоединяемые к URL, называются строкой запроса.Этот метод имеет ограничения, если переменные требуются вам немедленно при загрузке SWF-файла. При использовании данного метода необходимо загрузить и воспроизвести SWF-файл, прежде чем можно будет запросить большое количество данных с сервера.

Ключевые слова: передать; параметры; строка запроса; объект; встроить; tn_16417

Эта работа лицензируется в соответствии с лицензией Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported  На посты, размещаемые в Twitter™ и Facebook, условия Creative Commons не распространяются.

Правовые уведомления   |   Политика конфиденциальности в сети Интернет