2010-10-05 3 views
10

Я хотел бы обновить аргумент FlashVars значение для просмотра другого видео:FlashVars обновления и перезагрузки флэш с JQuery

<param name='flashvars' value='movieId=1002' /> 

Я узнал, что я могу заставить его работать в Firefox, обновляя параметр с дополнительным шагом считывания всего содержимого вспышки.

$("param[name=flashvars]").attr("value", "movieId=33"); 
$("embed").attr("flashvars", "movieId=33"); 
$(".root").append($("#video")); 

Но это не работает в IE8, поскольку браузер не обновляет содержимое вспышки. Любые идеи о том, как перезагрузить содержимое Flash без внешних зависимостей, таких как swfobject.js?

ответ

0

Вместо использования flashvars вы можете использовать класс ExternalInterface AS3 для отправки нового значения во Flash.

ExternalInterface позволяет использовать два пути связи между AS3 & Javascript

+2

Это не решение, насколько я понимаю. Что делать, если нам нужно перезагрузить Flash? – momijigari

4

Мне любопытно, об этом тоже. Я пытаюсь отправить новую строку через flashvars в SWF, что у меня нет возможности измениться, и просто изменить flashvars с помощью jQuery, не используя внешний интерфейс, является лучшим вариантом.

+0

Я тоже это ищу. – Natim

0

Собственно, почему бы не использовать 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> 
3

Если вы хотите изменить флэш-ВАР и перезагрузить Flash, вы должны просто удалить SWF из DOM и вставлять его снова с новыми переменными (с использованием SWFObject или любой другой метод подходит для вашей фантазии!).

Если вы хотите изменить флеш-карты без перезагрузки Flash, вам не повезло: официально не поддерживается. В этом случае вы должны использовать ExternalInterface для вызова методов ActionScript, которые обновляют ваши значения из JavaScript.

5
// 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()); 
+0

Хороший ответ - это сработало для меня. Тем не менее, я отключил последнюю строку с помощью '$ (" # mviewer "). Append (obj);' – Eric

+0

Не работает для меня: – momijigari

+0

Вам нужно использовать внешний * HTML * объекта, чтобы включить '' ' '' 'тег. Например. '' 'Append (OBJ [0] .outerHTML)' ''. –

Смежные вопросы