有没有办法从ExternalInterface调用Javascript类方法?

时间:2010-12-04 11:02:16

标签: javascript actionscript externalinterface

我可以用ExternalInterface.call('func_name',.args)调用JS函数。行

但是如果我想调用js类实例方法呢?

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

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

这只是一个范围问题。您必须在js类之外实例化swf对象。然后我可以在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)) 以前,我在rm内构建了swf,因此无法从swf中引用rm

答案 1 :(得分:0)

您可以使用ExternalInterface调用JavaScript方法。 请确保您已包含JavaScript文件,或者已在index.template.html文件中编写JavaScript函数,这可能如下所示:

<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);

如果这不起作用,请检查html文件中的JavaScript函数。

您已发布以下声明:

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

您确定要发送“.args”而不是“args”吗?

我希望这会对你有所帮助。