Bah, this was a really silly thing - but it's pretty important so I'll leave this here for future viewers. I knew I was doing something daft.
ActionScript 2 and ActionScript 3 have different parameter requirements for ExternalInterface::addCallback()
- this can really mess things up for you!
ActionScript 2
public static addCallback(methodName: String, instance: Object, method: function)
methodName - a string that the JavaScript will call
instance - the object to which this
resolves in the method. I set it to null.
method - the method you want called in your actionscript
You'll note that this method returns a boolean.
ActionScript 3
public static addCallback(functionName: String, closure: Function)
methodName - a string that the JavaScript will call
closure - the method you want called in your actionscript
You'll note that this method returns void.
I did spend half a day trying to figure this out, so hopefully the above is useful. Check what version of actionscript you are working with first. Then use the above to figure out whether you need two parameters or three.