2010-12-04 94 views
2

我可以用ExternalInterface.call('func_name',.args)調用JS函數。好吧有沒有辦法從ExternalInterface調用Javascript類方法?

但是如果我想調用一個js類實例方法呢?

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

有沒有辦法做到這一點?

+0

爲什麼不把類返回包裝在函數中? – chchrist 2010-12-04 11:04:47

回答

0

您可以使用ExternalInterface調用JavaScript方法。 可以肯定,你已經包含在您的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); 

如果不工作,請檢查您的HTML文件中的JavaScript的功能。

您已經發布了以下聲明:

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

你確定要發送「.args」,而不是‘ARGS’?

我希望這會對你有所幫助。

+0

嗯,我的問題不同。無論如何,我自己解決了。 – Luca 2010-12-04 15:18:12

+0

對不起,我誤解了 - 但很好,你已經解決了你的問題。 – EvilMM 2010-12-04 16:28:07

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

相關問題