PDA

Просмотр полной версии : Передача данных flash-JavaScript


Ezhy
27.07.2009, 18:01
Добрый день!

Задача банальна как мир - есть 3 кнопки (гиперссылки) в HTML-документе и флешка. Необходимо чтобы при клике на кнопки в флешке проигрался один из трех видеороликов.
То есть, необходимо передать имя flv-фала, который требуется проиграть в Flash-плеере.

Пробовал 2мя путями:

1. Через ExternalInterface.addCallback - что-то не смог сделать рабочую связку - браузер выдает ошибку "Неизвестный метод ...". Быть может проблема в том, что страницы просматриваются локально, а не с сервера? Тонкость в том, что просматриваться будет с компакт-диска, а не с сервера. Если возможно, подкиньте работающий примерчик по-проще? (html + fla)

2. Попытался динамически создать объект с флеш-роликом (JavaScript document.createElement ... и т.д.). Проблема в том, что для тега <object> не создается элемент <embed>, а так как все ориентируется на 95% не IE, то без него ни как. Есть вариант решить без тега Object, а просто тегом <embed>, но хотелось бы бОльшей универсальности

Меня бы устроил вариант с передачей имени файла через get-переменные, но что-то не нашел как их (или текущий URL с ними) считать средствами ActionScript....

Заранее большое спасибо!:bye:

Mnilionic
28.07.2009, 14:43
можно без <embed>

<object data="file.swf" type="application/x-shockwave-flash" width="200px" height="100px">
<param name="movie" value="file.swf" />
</object>

Ezhy
28.07.2009, 14:55
без <embed> нельзя - ибо
тогда не работает в опере и фоксе... =(

iNils
28.07.2009, 15:04
без <embed> нельзя - ибо
тогда не работает в опере и фоксе... =(
Работает (http://riapriority.com/blogs/vertex.php/2009/02/28/object_embed_html_backdoor).

Ezhy
31.07.2009, 13:53
Покопался, почитал... (iNils, спасибо за инфу!)
Но трабл продолжает иметь место быть - не удается создать дочерний объект для <object>

filename = "player.swf";

p = document.createElement ("PARAM");
p.name = "movie";
p.value = filename;
alert (p.outerHTML);

o = document.createElement ("OBJECT");
o.type = "application/x-shockwave-flash";
o.width = 400;
o.height = 320;
o.data = filename;
alert (o.outerHTML);
o.appendChild (p);

document.getElementById ("div_01").appendChild (o);
alert (document.getElementById ("div_01").outerHTML);

Данный код работает в опере, но в IE не добавляется вложенный <param>

iNils
31.07.2009, 14:13
Для оформления своего кода, надо использовать теги (http://www.flasher.ru/forum/showthread.php?t=122539).

Ezhy
03.08.2009, 16:09
В общем, решение было найдено такое:

В HTML-файле при клике делается:


_param = 'fname='+encodeURIComponent(PUT_URL_HERE);

document.getElementById (...).innerHTML = '<object type="application/x-shockwave-flash" width="400" height="320" data="../i/player.swf?'+_param+'"><param name="movie" value="../i/player.swf?'+_param+'"/><p>Please, install flash player!</p></object>';


в флеш-плеере на первом кадре висит:
player.contentPath = _root.fname;