Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   ExternalInterface из JS в Flash не работает (http://www.flasher.ru/forum/showthread.php?t=211590)

scorp2007 26.09.2015 18:46

ExternalInterface из JS в Flash не работает
 
Приветствую, казалось бы более менее понятная вещь, из флешки выполнить js функцию получилось легко, а наоборот вот уже битый час голову ломаю в чем проблема. Флеш на страницу вставляю с помощью SwfObject. Нужно из js скрипта выполнить функцию в флешке, вот мой коды:

Flash:
Код AS3:

Security.allowDomain("*");
 if (ExternalInterface.available)
  {
  trace("ExternalInterface= " + ExternalInterface.available);
  flash.external.ExternalInterface.addCallback('jsToFlash', jsHandler);
  }
 
private function jsHandler(message:String):void
 {
  menum.entxt.text = message;
  }

HTML(JS):
Код:

var params                  =  {};
params.menu                =  "false";
params.salign              =  "t";
params.scale                =  "noscale";
params.wmode                =  "transparent";
params.allowScriptAccess    =  "always";

var attributes              =  {};
attributes.id = "hero";
attributes.name = "hero";

swfobject.embedSWF("hero.swf", "app", "700", "525", "10","https://vkontakte.ru/swf/expressinstall.swf", flashVars, params, attributes);

//Другой код и в нужном месте вызываю
document.getElementById("hero").jsToFlash();

И в итоге получаю такую ошибку при попытке отправить элементу hero (сам элемент находится):
Uncaught TypeError: document.getElementById(...).jsToFlash is not a function

В чем дело и как исправить подскажите кто знает плиз!

Добавлено через 3 часа 55 минут
Выяснил в чем дело было, оказывается флешка не обновлялась просто на сайте!

ALeXVoz 27.09.2015 00:24

Можно пробовать вот так
Код:

<script>
function sendFromJS(value) {
    var movie = (navigator.appName.indexOf("Microsoft")!=-1 ? window : document)["BridgeMovie"]   
    movie.jsToFlash(value);   
}
</script>

Где флешь вставлен через эмбед
Код:

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" name="BridgeMovie" width="500" height="300" id="BridgeMovie">
    <param name="movie" value="hero.swf" />
    <param name="allowScriptAccess" value="sameDomain" />
    <embed src="hero.swf" name="BridgeMovie" align="middle" play="true" loop="False" quality="high" allowscriptaccess="sameDomain" width="500" height="300" scale="exactfit" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">
    </embed>
</object>

BridgeMovie - встречается в id и в name и у объекта и у эмбеда. Не помню обязательно это или нет. Надо тестировать.

Насчет SwfObject не знаю, сработает ли метод. Надо тестировать.
Код взят с рабочего проекта.

Ошибка может быть в том, что сначала надо получить ссылку на объект (в переменную) а потом уже у переменной вызывать метод jsToFlash


Часовой пояс GMT +4, время: 20:08.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.