вызов внешнего Flash-интерфейса с помощью JavaScript - PullRequest
1 голос
/ 27 марта 2009

Я пытаюсь вызвать функцию, объявленную с ExternalInterface во Flash SWF, используя JavaScript. Это сработало один раз, но внезапно перестало работать.

У меня есть отладочная версия Flash Player, но ошибок во Flash не возникает. Даже не «Ошибка песочницы безопасности» или что-то в этом роде. Единственная ошибка, которую я получаю, это следующая ошибка в JavaScript Error: Error in Actionscript. Use a try/catch block to find error.

Я использую AS3, экспортирую для Flash Player 10 и тестирую на Firefox 3 / Safari 4, на Mac.

Любая помощь будет принята с благодарностью.

Ответы [ 4 ]

7 голосов
/ 27 марта 2009

Извлечение ExternalInterface.marshallExceptions . Это должно позволить вам увидеть более подробную информацию об ошибке.

4 голосов
/ 27 марта 2009

Довольно сложно помочь вам решить что-то, что «сработало однажды». Но использовать ExternalInterface довольно просто - вот что я делаю:

в AS3: что-то вроде

...
if (ExternalInterface.available) ExternalInterface.addCallback("search", jsSearch);
...
private function jsSearch(term:String):void 
{
    new Search(data);
}

в JS: что-то вроде

...
var term = $('input#search').val();
$("#swfobject").get(0).search(term);
....
0 голосов
/ 29 марта 2009

в вашем качестве

import flash.external.*;
ExternalInterface.call("return_me_some_value()");

и в вашем html

<script>
var super_var = 'something';

function return_me_some_value() {
  return super_var;
}
</script>
0 голосов
/ 29 марта 2009
  • Убедитесь, что JavaScript и SWF находятся в одних и тех же доменах, в противном случае используйте crossdomain.xml
  • Убедитесь, что вы добавили параметр allowScriptAccess во встроенную флэш-память
  • Если вы запускаете его локально, вы можете (но не думаю, что это что-то изменит) добавить местоположение к доверенным флеш-плеерам (в панели безопасности).
...