Ответ 1
Вместо использования flashvars вы можете использовать класс ExternalInterface AS3 для отправки нового значения во Flash.
ExternalInterface позволяет двухстороннюю связь между AS3 и Javascript
Я хотел бы обновить аргумент значения flashvars для просмотра другого видео:
<param name='flashvars' value='movieId=1002' />
Я узнал, что могу заставить его работать в Firefox, обновив параметр дополнительным шагом для чтения всего содержимого флеш-памяти.
$("param[name=flashvars]").attr("value", "movieId=33");
$("embed").attr("flashvars", "movieId=33");
$(".root").append($("#video"));
Но это не работает в IE8, поскольку браузер не обновляет содержимое Flash. Любые идеи о том, как перезагрузить содержимое Flash без внешних зависимостей, таких как swfobject.js?
Вместо использования flashvars вы можете использовать класс ExternalInterface AS3 для отправки нового значения во Flash.
ExternalInterface позволяет двухстороннюю связь между AS3 и Javascript
// update flashvars
var fv = 'foobar=1';
$("object param[name='flashvars']").attr("value", fv);
$("embed").attr("flashvars", fv);
// create new object to hold it
var obj = $("object");
// remove existing Flash from DOM
$("object").remove();
// add new HTML to DOM
$("#mviewer").append(obj.html());
Мне тоже интересно. Я пытаюсь отправить новую строку через flashvars в SWF, что у меня нет возможности изменить, и просто изменение flashvars с помощью jQuery, без использования внешнего интерфейса, является лучшим вариантом.
Если вы хотите изменить флеш-вары и перезагрузить Flash, вы должны просто удалить SWF из DOM и вставить его снова с новыми варами (используя SWFObject или любой другой способ, подходящий вашему воображению!).
Если вы хотите изменить флеш-карты без перезагрузки Flash, вам не повезло: официально не поддерживается. В этом случае вы должны использовать ExternalInterface для вызова методов ActionScript, которые обновляют ваши значения из JavaScript.
Собственно, почему бы не использовать swfobject.js?
Мне понравилось:
<script type="text/javascript" src="js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="js/swfobject.js"></script>
<div id="qsound"></div>
<script type="text/javascript">
if(q.sound) {
swfobject.embedSWF("js/dewplayer/dewplayer.swf", "qsound", "60", "20", "9.0.0", false, {'mp3': 'sounds/'+q.sound}, {'wmode': 'transparent'});
$('#qsound').show();
} else {
$('#qsound').hide();
}
</script>