我必须使用普通的HTML5 AsyncFileAPI实现NPAPI。另外,Microsoft Gamepad键事件的回调机制。
我面临的问题是如何实现threadcallasync,并从普通的NPAPI插件向javascript发送数据。一些有用的链接或工作代码将不胜感激。我是新的NPAPI插件。我必须在Linux中实现的线程异步,已经看到了一些在windows中实现的链接。
发布于 2012-08-24 05:09:18
我肯定会推荐使用FireBreath来创建插件;它可以为您解决大部分困难的问题,您可以找到关于如何执行异步调用的教程。
如果您选择不这样做,基本上您只需传递一个javascript函数,在NPAPI中它将是一个NPObject,然后当您的操作完成时,在回调NPObject上使用NPN_InvokeDefault。当然,您需要在主线程上这样做,这将需要一些方法将消息发送到主线程,让它进行调用。
一般来说,NPN_PluginThreadAsyncCall是这样做的;使用所需的数据给它一个函数指针和一个空*,它将在主线程上调用您的函数。不幸的是,windows和mac上的Safari 5.1似乎都放弃了对此功能的支持。windows上的另一种方法是使用LPARAM中的不透明指针创建消息HWND和PostMessage。在Mac上,您只需使用PerformSelectorOnMainThread或NSTimer即可。我不知道如何在linux上做到这一点。
当然,FireBreath会为您处理所有这些问题,只需将回调封装在一个可以从任何线程调用的JSObjectPtr中.你叫它,你就会在正确的线程上为你发出召唤。它也会在IE上工作..。但这取决于你。我试图给出其他的选择,因为我写了FireBreath的大部分内容,而且我有一点偏见。
(仅仅因为我有偏见并不意味着我错了)
祝好运!
https://stackoverflow.com/questions/12096525
复制相似问题