A quick little note, if you want to pass anonymous functions as parameters as well as regular function pointers, there is a small difference in their Qualified classnames. An anonymous function is not considered a real function but rather a “method closure” and has an internalized classname:

function detectFunctionType (obj:Object)
{
   trace(getQualifiedClassName(obj));
}

detectFunctionType(detectFunctionType);
detectFunctionType(function () {  // This is an anonymous function });

And your output is:

Function
builtin.as$0::MethodClosure

Just something to keep in mind when passing function pointers. In general usage you may want to support both anonymous functions along with declarative ones, so if you are using getQualifiedClassName in your code when working with callbacks, you should accept both of them.