假设我们有许多ExternalInterface.addCallback函数,如下所示:
ExternalInterface.addCallback( 'foo', handler );
ExternalInterface.addCallback( 'bar', handler );
ExternalInterface.addCallback( 'foobar', handler );在函数handler中,我想找到通过外部接口调用的方法名,比如foo, bar or foobar;有什么方法吗?例如:
private function handler(...args):void
{
arguments.callee.arguments[ 0 ];
}但我怀疑这是否会奏效
发布于 2011-05-23 22:32:46
这应该是可行的。只需从javascript中传递一个参数来标识您的函数,例如字符串。因此,当您在javascript代码中调用flash-function时,请传递一个字符串,然后在处理程序函数中解析该字符串。例如:
actionscript:
ExternalInterface.addCallback( 'foo', handler );
private function handler(s:String):void
{
if(s == "foo") {
//foo specific code
}
}javascript:
document.getElementById('flashObj').foo("foo");发布于 2011-05-24 01:51:24
这不完全是你想要的,但它会给你你需要的信息。
只需将您发送给函数名的第一个参数设置为,或者在本例中为具有funcname属性的对象,这样您就可以测试它是否存在。
JavaSCript
function thisMovie(movieName) {
if (navigator.appName.indexOf("Microsoft") != -1) {
return window[movieName];
} else {
return document[movieName];
}
}
thisMovie("ExternalInterfaceExample").genericCallBack({ funcname:'foo' })
thisMovie("ExternalInterfaceExample").genericCallBack({ funcname:'poo' })
thisMovie("ExternalInterfaceExample").genericCallBack({ funcname:'moo' })AS3
public function foo( ):void{
trace('in foo')
}
public function poo( ):void{
trace('in poo')
}
public function moo( ):void{
trace('in moo')
}
public function genericCallBack( o:Object ):void{
trace( 'calling '+o.funcname)
this[o.funcname]()
}
// add this somewhere in your init process
ExternalInterface.addCallback( 'genericCallBack', genericCallBack );https://stackoverflow.com/questions/6098367
复制相似问题