我做了許多的ExternalInterface調用JavaScript方法,並有這樣做的一個輔助功能:展開的... args數組在函數調用
protected function JSCall(methodName:String, ...args):void
{
try
{
ExternalInterface.call(methodName, args);
}
… etc …
}
然而,這意味着JavaScript的方法只能傳遞一個參數 - 參數數組 - 意味着我必須改變JavaScript來適應這個,例如而不是:
function example(argument1, argument2)
{
}
我結束了:
function example(args)
{
var argument1 = args[0];
var argument2 = args[1];
}
我很想做的是展開傳遞給JSCall
方法的參數數組,這樣每個參數單獨傳遞給ExternalInterface
調用,使得:
JSCall('example', ['one', 'two'])
的作品,如:
ExternalInterface.call('example', 'one', 'two')
這確實有效,它的巧妙破解,我自己已經使用了好幾次,看起來很奇怪,90%的人第一次看到它時不明白,但嘿,太棒了! – 2010-12-13 19:24:14
嗨Mims/Ivo,不幸的是,雖然這不會導致任何編譯/運行時Flash錯誤,但在嘗試執行EI調用時會引發JavaScript錯誤。 @Ivo - 你有使用這種技術的真實例子嗎? – 2010-12-15 11:01:30
通過查看apply()的API文檔,我可以看到以下是如何工作的:'ExternalInterface.call.apply(null,[methodname,args])',但這與直接使用ExternalInterface.call相同, t幫助;) – 2010-12-15 11:03:16