Есть ли способ вызвать метод класса Javascript из ExternalInterface? - PullRequest
2 голосов
/ 04 декабря 2010

Я могу вызывать функции JS с помощью ExternalInterface.call('func_name',.args). OK

Но что, если я хотел бы вместо этого вызвать метод экземпляра класса js?

ExternalInterface.call('obj.method_name',.args) //this seems not to work

Есть ли способ сделать это?

Ответы [ 2 ]

2 голосов
/ 04 декабря 2010

Это был только вопрос объема.Вы должны создать экземпляр объекта swf вне класса js.Тогда я могу сослаться на него в ExternalInterface.call().

window.addEvent('domready',function(){

    swf = new Swiff('../files/swf/italy.swf',{
        id:'italy',
        container:'italy-flash',
        width:280,
        height:323,
        params:{
            bgcolor:'#ffffff',
            wmode:'opaque',
            allowScriptAccess:'always'
        }
    });

    rm = new RelessersManager('regions');

});

Теперь из swf я могу вызвать методы rm.:) (.call('rm.method_name',...params)) Раньше я создавал swf внутри rm, поэтому не было возможности ссылаться на rm из swf.

0 голосов
/ 04 декабря 2010

Вы можете вызвать метод JavaScript с ExternalInterface.Убедитесь, что вы включили свои JavaScript-файлы или написали свою JavaScript-функцию внутри вашего index.template.html-файла, это может выглядеть следующим образом:

<script type="text/javascript" src="./lib/file.js"></script>
<script type="text/javascript">   
  function doSomtething() {
    alert("Something is done");
  }
</script>

Если вы хотите вызвать функцию "doSomething () "вы можете сделать это с помощью следующего кода:

ExternalInterface.call("doSomething");

Если вы хотите отправить какой-либо параметр, и ваша функция JavaScript определяется следующим образом:

<script type="text/javascript">   
  function doSomtething(param1, param2) {
    alert("Something is done");
  }
</script>

Вы можете вызватьэто с этим утверждением:

ExternalInterface.call("doSomething", param1, param2);

Если это не работает, проверьте ваши JavaScript-функции внутри html-файла.

Вы опубликовали следующее утверждение:

ExternalInterface.call('obj.method_name',.args)

Вы уверены, что хотите отправить «.args» вместо «args»?

Надеюсь, это вам немного поможет.

...