Что такое FlashVars?
FlashVars - это пользовательские переменные, доступные .swf-приложениям во время исполнения кода, значения которых выставляются вне приложения, при вставки на .html-странице.
Как добраться до значений FlashVars в ActionScript 3.0?
В ActionScript 2.0 эти переменных можно было найти в корневом клипе документа _root, и обратиться к ним можно было вот так: _root.["your_var_name"].
В Action Script 3.0 эти переменные остались там же - в корневом классе документа в специальном свойстве loaderInfo, класса flash.display.LoaderInfo, который отвечает за информацию загружаемого .swf-файла.
Смотрите также:
FlashVars - это пользовательские переменные, доступные .swf-приложениям во время исполнения кода, значения которых выставляются вне приложения, при вставки на .html-странице.
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="100%" height="100%" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="movie" value="main.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#ffffff" /> <param name="wmode" value="opaque"> <param name="allowFullScreen" value="true" /> <param name="scale" value="noscale" /> <param name="flashvars" value="your_variable_name=your_variable_value"/> <embed scale="noscale" src="main.swf" flashvars="your_variable_name=your_variable_value" allowFullScreen="true"quality="high" bgcolor="#ffffff" width="100%" height="100%" align="middle" wmode="opaque" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="https://www.macromedia.com/go/getflashplayer" /> </object>
Как добраться до значений FlashVars в ActionScript 3.0?
В ActionScript 2.0 эти переменных можно было найти в корневом клипе документа _root, и обратиться к ним можно было вот так: _root.["your_var_name"].
В Action Script 3.0 эти переменные остались там же - в корневом классе документа в специальном свойстве loaderInfo, класса flash.display.LoaderInfo, который отвечает за информацию загружаемого .swf-файла.
package { import flash.display.Sprite; import flash.events.Event; // public class Main extends Sprite { public function Main():void { trace(this.loaderInfo.parameters["your_variable_name"]) } } }
Смотрите также:
Спасибо за полезную инофмацию.
ОтветитьУдалитьВот только еще вопрос, почему много информации дублируется в коде, который вставляет файл .swf
Дело в том что в разных браузерах используются разные отображения .swf-файлов. В InternetExplorer используется ActiveX компонент, в остальных PlugIn. Поэтому для одного пишется так, для другого по-другому. Если убрать тег <embed>, то флешка перестанет отображаться во всех браузерах, кроме InternetExplorer. Если убрать <param movie="main.swf">, то перестанет отображаться и в IE.
ОтветитьУдалитьНаверное лучше обращатья через stage, а название переменной можно писать просто через точку:
ОтветитьУдалитьstage.loaderInfo.parameters.your_variable_name
Да, конечно ты прав.
ОтветитьУдалитьИногда в тестовых целях надо "имитировать" данные FlashVars: ведь когда Вы только разрабатываете, Вы запускаете в тестовом режиме (по умолчанию) только Ваш флэш, без всяких FlashVars.
ОтветитьУдалитьЕсть два варианта:
1. Во FlashDevelop в свойствах проекта для TestMovie выбрать Open Document -> bin/index.html - и в index.html вставить Ваши FlashVars.
2. В Вашем приложении:
var myparam:String = "";
if (stage.loaderInfo.parameters.myparam == undefined)
{
myparam = "mytestvalue";
}
else
{
myparam = stage.loaderInfo.parameters.myparam;
}
elena,
ОтветитьУдалитьили проще и нагляднее:
var _externalParameters:Object = stage.loaderInfo.parameters;
var myparam:String = _externalParameters.myparam ? _externalParameters.myparam : "mytestvalue";
и еще: Адоби строго рекомендует юзать библиотеку SWFObject, для вставки флэшек на страницу. Забудьте вы про embed и прочие танцы вокруг костра.
ОтветитьУдалитьАдоби только рекомендует, а прислушиваться или нет - дело личное. Пост не о том, как вставлять .swf-файл в html-страницу. За свою практику, я встречался с различными способами вставки, и возможно напишу об этом отдельный пост :)
ОтветитьУдалитьА если этот свф файл подгружен в другой то переменные флешварс он не может достать?
ОтветитьУдалитьДа, может.
ОтветитьУдалитьА можете подсказать с таким вопросом:
ОтветитьУдалитькак быть, если значения переменных, передаваемых через FlashVars, содержат символ &?
Я пробовал заменять его на & — но всё равно ролик не воспринимает его, а в переменную попадает обрезанное (до первого вхождения &) значение.
Заранее спасибо :)
Прежде чем передать значение, замените в нем символ & на другой (например на |), после того как получите его сделайте обратную замену.
ОтветитьУдалитьСпасибо за ответ.
ОтветитьУдалитьЯ, собственно, так и поступил. Но всё же это костыль...
Символ "&" пишем так "&"
ОтветитьУдалитьИ попутно вопрос, прочитав все вышеизложенное, а также теорию возможности подгруженного матрешкой ролика с FlashVar и его подхвата...
как првильно оформить код с таким SWF во FLA AS3, SWF который загрузиться в другой, со значениями в моем случае:
flashvars - "showtext=1&showabout=1"
Спасибо
_root.["your_var_name"] - очепятка
ОтветитьУдалитьточка не нужна.
_root["your_var_name"] - правильно
Здравствуйте а как можно с помощью loaderInfo.parameters манипулировать кнопками или мувиками на сцене, к примеру я хочу скрыть часть контента который в мувике, через параметр в html, или же убрать некоторые кнопки в проекте, чтоб каждый раз не перекомпиливать проект, если возможно, дайте пожалуйста примерчик. Спасибо огромное
ОтветитьУдалитьЗдравствуйте а как можно с помощью loaderInfo.parameters манипулировать кнопками или мувиками на сцене, к примеру я хочу скрыть часть контента который в мувике, через параметр в html, или же убрать некоторые кнопки в проекте, чтоб каждый раз не перекомпиливать проект, если возможно, дайте пожалуйста примерчик. Спасибо огромное
ОтветитьУдалить