You're looking at out of date docs, the new docs say it has two args.

See the docs at http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/

addCallback()method public static function
addCallback(functionName:String<http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html>,
closure:Function<http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html>
):void<http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/specialTypes.html#void>
* Language Version : *ActionScript 3.0* Runtime Versions : *AIR 1.0, Flash
Player 9

Registers an ActionScript method as callable from the container. After a
successful invocation of addCallBack(), the registered function in Flash
Player can be called by JavaScript or ActiveX code in the container.

*Note:* For *local* content running in a browser, calls to the
ExternalInterface.addCallback() method work only if the SWF file and the
containing web page are in the local-trusted security sandbox. For more
information, see the following:

   - The security
chapter<http://www.adobe.com/go/flashCS3_progAS3_security>in the
   *Programming ActionScript 3.0* book and the latest comments on LiveDocs
   - The Flash Player 9 Security white
paper<http://www.adobe.com/go/fp9_0_security>

 Parameters

functionName:String<http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/String.html>—
The name by which the container can invoke the function.

closure:Function<http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Function.html>—
The function closure to invoke. This could be a free-standing
function, or
it could be a method closure referencing a method of an object instance. By
passing a method closure, you can direct the callback at a method of a
particular object instance.
Throws
Error <http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/Error.html> —
The container does not support incoming calls. Incoming calls are supported
only in Internet Explorer for Windows and browsers that use the NPRuntime
API such as Mozilla 1.7.5 and later or Firefox 1.0 and later.
SecurityError<http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/SecurityError.html>
—
A callback with the specified name has already been added by ActionScript in
a sandbox to which you do not have access; you cannot overwrite that
callback. To work around this problem, rewrite the ActionScript that
originally called the addCallback() method so that it also calls the
Security.allowDomain() method.
SecurityError<http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/SecurityError.html>
—
The containing environment belongs to a security sandbox to which the
calling code does not have access. To fix this problem, follow these steps:

   1. In the object tag for the SWF file in the containing HTML page, set
   the following parameter:

   <param name="allowScriptAccess" value="always" />
   2. In the SWF file, add the following ActionScript:

   flash.system.Security.allowDomain(*sourceDomain*)

See also


On Fri, Jun 12, 2009 at 12:51 PM, Sarah Allen <[email protected]> wrote:

> I'm seeing a weird compiler error in trunk... might be recent regression
> (it is possible, but unlikely that I somehow left this code in a state that
> had a compiler error a couple of months ago when I last looked at this app)
>  I'll be looking at this more, but I wanted to send a note in case anyone
> else is seeing something similar or has any ideas.
>
> org.openlaszlo.sc.CompilerError: main.lzx: 41: Error: Incorrect number of
> arguments. Expected no more than 2, in line:
> flash.external.ExternalInterface.addCallback("playMedia", null, playMedia)
>
> The Flash docs indicate that there are three arguments:
>
> http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00001653.html
>
> Also, is there any LZX-native way that I should be making this call instead
> of devolving into calling Flash directly?
>
> Thanks in advance,
> Sarah
>
>
>


-- 
Henry Minsky
Software Architect
[email protected]

Reply via email to