2012-08-30 83 views
2

我有一个Flash游戏,它发送和接收来自JavaScript的大量消息。 有时我需要停止监听这些函数,但ExternalInterface没有removeCallback函数。所以我做了很糟糕的事情:使用布尔值来验证每个函数中是否有回调函数。如何删除addCallback?

任何更好的解决方案?

ExternalInterface.addCallback("callAlert", callAlert); 
function callAlert(msg:String){ 
    if(callAlertAvailable){ 
     //... 
    } 
} 

回答

4

再打电话来的addCallback,设置功能为空:

ExternalInterface.addCallback("callAlert", null); 

为什么不阅读文档?我在这里找到:
ExternalInterface.addCallback()

Note: Repeating addCallback() on an existing callback function with a null closure value removes the callback.

+0

谢谢!我从来没有读过这个文件,我很抱歉...你是BR吗? –

+0

注意:这实际上并没有很好的工作,当回调尚未添加 - 从JS调用方法显示“Uncaught TypeError:undefined不是一个函数”,当它被删除与上述方法 - 它会显示“未捕获的错误:在NPObject上调用方法时出错。“所以它不工作很干净。 – alun

+0

我试着用这段代码删除它,但是当Web调用删除事件时出现错误:[Fault] exception,information = TypeError:Error#1009:Can not access a property or method of null object reference。 at flash.external :: ExternalInterface $/_ callIn() – Selirion